docker nginx - не подниматься при попытке добавить тома для nginx.conf / default.conf - PullRequest
0 голосов
/ 31 октября 2019

Когда я пытаюсь запустить образ nginx с томами для копирования / синхронизации «nginx.conf» и «папки conf.d», он не раскручивается. Нет ошибок, но если я запускаю Docker-контейнер ls, контейнер не отображается. Если я прокомментирую «Тома с проблемами», он раскручивает контейнер и все работает нормально. Хочу отметить, что если я прокомментирую любой из них, если контейнер не раскручивается, проблема заключается в обоих томах.

Структура папки:

Project Name
|-- core_dir
|-- core_dir
|-- core_file.file
|-- core_file.file
|-- docker-compose.yml
`-- docker
    |-- php
    |   |-- Dockerfile
    |   `-- php.ini
    |-- mysql
    `-- nginx
        |-- nginx.conf
        `-- conf.d
            `-- default.conf

Тома с проблемой:

volumes:
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/conf.d/:/etc/nginx/conf.d

Мой docker-compose.yml:

version: "3.0"

services:

  #nginx
  nginx:
    image: nginx:stable-alpine
    ports:
      - "80:80"
    volumes:
      - ./:/var/www/html
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/conf.d/:/etc/nginx/conf.d
    depends_on:
      - php
      - mysql
    networks:
      - wordpress


  #mysql
  mysql:
    image: mysql:5.7.22
    env_file:
      - .env.development
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE:
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
    networks:
      - wordpress
    volumes:
      - ./docker/mysql:/var/lib/mysql

  #php
  php:
    build:
      context: ./docker/php
      dockerfile: Dockerfile
    container_name: php
    volumes:
      - ./:/var/www/html
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
    ports:
      - "9000:9000"
    networks:
      - wordpress

networks:
  wordpress:

Заранее спасибо,

Брэм

Ответы [ 3 ]

1 голос
/ 02 ноября 2019

Я исправил проблему.

Благодаря rok , который указал мне, что я могу проверить журналы разбившегося контейнера, я смог увидеть, какая ошибка вызвала сбой.

Проверка журналов для отказавшего контейнера

запустите docker ps -a, чтобы увидеть сбойные контейнеры, а затем запустите docker logs [container_id] в сбойном контейнере.

Ошибка

Директива "daemon" дублируется в /etc/nginx/nginx.conf:

Nginx.conf

 user  nginx;
    worker_processes  4;
    daemon off;

    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;

    events {
        worker_connections  1024;
    }

    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;

        client_max_body_size 100M;
        server_names_hash_bucket_size 64;

        access_log  /var/log/nginx/access.log;
        # Switch logging to console out to view via Docker
        #access_log /dev/stdout;
        #error_log /dev/stderr;

        sendfile        on;
        keepalive_timeout  65;

        include /etc/nginx/conf.d/*.conf;
        #include /etc/nginx/sites-available/*.conf;
    }

Решение

Удаление строки «демон выключен»;исправил проблему для меня.

1 голос
/ 31 октября 2019

Причиной сбоя контейнера может быть множество причин:

  • конфигурация, которую вы монтируете в контейнер, неверна
  • папок, которые вы монтируете, не выходит на хост

Чтобы понять, что не так, вам нужно запустить docker ps -a, чтобы увидеть сбойные контейнеры, а затем запустить docker logs [container_id] в сбойном контейнере.

Более того, вы можете следовать документам nginx и попробуйте запустить nginx только с Docker.

Чтобы исключить проблемы с томами, вы можете создать собственный образ nginx с конфигурациями:

FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY docker/nginx /etc/nginx

docker build -t mynginx_image1 .

docker run --name mynginx3 -p 80:80 -d mynginx_image1

0 голосов
/ 31 октября 2019

Часто возникает проблема с использованием относительного пути в файле compose.

Не могли бы вы использовать абсолютный путь или именованные тома вместо использования относительного пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...