我正在尝试使用docker配置LEMP开发环境,并且遇到nginx
时出现问题,因为一旦它有新配置,我似乎无法重新启动nginx
。
docker-compose.yml
:
version: '3'
services:
nginx:
image: nginx
ports:
- '8080:80'
volumes:
- ./nginx/log:/var/log/nginx
- ./nginx/config/default:/etc/nginx/sites-available/default
- ../wordpress:/var/www/wordpress
php:
image: php:fpm
ports:
- 9000:9000
mysql:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- ./mysql/data:/var/lib/mysql
我有一个自定义nginx
配置替换/etc/nginx/sites-available/default
,在正常的Ubuntu环境中,我会运行service nginx restart
来提取新配置。
但是,如果我尝试使用此Docker环境,nginx
容器exits with code 1
。
docker-compose exec nginx sh
service nginx restart
-exit with code 1-
如何将nginx
与自定义/etc/nginx/sites-available/default
文件一起使用?
答案 0 :(得分:4)
基本上你可以通过调用这个命令reload nginx 配置:
docker exec <nginx-container-name-or-id> nginx -s reload
答案 1 :(得分:1)
Docker容器应该在前台运行单个应用程序。当该进程在容器内部的pid 1退出时启动,容器也是如此(类似于如何杀死linux服务器上的pid 1将关闭该机器)。此过程不受OS服务命令管理。
在容器中重新加载配置的常规方法是重新启动容器。由于您使用的是docker-compose
,因此会docker-compose restart nginx
。请注意,如果此配置是映像的一部分,则需要重新构建并重新部署新容器,但由于您使用的是卷,因此不需要。