Docker - 如何重新启动 nginx 以应用自定义配置?

Rap*_*nah 7 nginx docker docker-compose

我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)

我有一个自定义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-
Run Code Online (Sandbox Code Playgroud)

我如何才能使用nginx自定义/etc/nginx/sites-available/default文件?

H A*_*døµ 13

基本上你可以通过调用以下命令来重新加载nginx 配置:

docker exec <nginx-container-name-or-id> nginx -s reload
Run Code Online (Sandbox Code Playgroud)


Tim*_*m K 5

专门使用 docker-compose 重新加载 nginx(而不是重新启动整个容器,从而导致停机):

docker-compose exec nginx nginx -s reload
Run Code Online (Sandbox Code Playgroud)