Docker не могу создать nginx - PullRequest
       152

Docker не могу создать nginx

0 голосов
/ 06 августа 2020

Я пытаюсь создать контейнер-контейнер docker с nginx. (Windows 10 64 бит)

  site:
    image: nginx:stable-alpine
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
      - mysql
    networks:
      - laravel

И получил ошибку:

ERROR: for site  Cannot start service site: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"rootfs_linux.go:58: mounting \\\"/host_mnt/e/laravel-docker-new/docker-compose-laravel/nginx
/default.conf\\\" to rootfs \\\"/var/lib/docker/overlay2/cc15f98e2704e4be5aa3d26ab7a216f3c301ebfcf678c951c2ae5aefad0f794a/merged\\\" at \\\"/var/lib/docker/overlay2/cc15f98e2704e4be5aa3d26ab7a216f3c301ebfcf678c951c2ae5aefad0f794a/merged/etc/nginx/conf.d/default.conf\\
\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

Как это исправить?

Обновить. Попробуйте conf

 site:

image: nginx:stable-alpine
container_name: nginx
ports:
  - "8080:80"
volumes:
  - ./src:/var/www/html/public
   ./nginx/default.conf COPY /etc/nginx/conf.d/default.conf
depends_on:
  - php
  - mysql
networks:
  - laravel

Но как использовать artisan?

artisan: build: context:. dockerfile: php .dockerfile имя_контейнера: тома artisan: - ./src:/var/www/html/public depends_on: - mysql working_dir: / var / www/html/public точка входа: ['/ var / www/html/public/artisan '] сети: - laravel

А как мне получить доступ к laravel?

Структура файлов

E: / laravel - docker - новый / docker -compose- laravel

.github
nginx
nginx/default.conf
src
src/app
src/bootstrap
src/config
src/database
src/public
src/resources
src/routes
src/storage
src/test
src/tests
src/vendor
src/.editorconfig
src/.env
src/.env.example
src/.gitattributes
src/.gitignore
src/.styleci.yml
src/composer.phar

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Если смонтированный файл не существует на хосте, возникает странная ошибка. Действительно ли существует папка nginx рядом с файлом набора, содержащим default.conf? Кроме того, относительные пути работают не во всех случаях. Убедитесь, что файл действительно существует в хост-системе, и, возможно, попробуйте передать абсолютный путь с помощью $ pwd (хотя я почти уверен, что относительные пути работают с compose - они не работают с обычным docker run).

Проверьте этот ответ для получения дополнительных сведений: Как смонтировать отдельный файл в томе

На основании вашего обновленного вопроса я предполагаю, что проблема вызвана тем, что ваши источники помещены на E: \ drive, который по умолчанию недоступен виртуальной машине, на которой запущены ваши контейнеры. Возможно, вам потребуется go в настройках вашего docker для windows и добавить этот путь к доступным общим папкам.

Подробнее см .: https://docs.docker.com/docker-for-windows/troubleshoot/#volume -mounting-requires- общие-папки-для- linux -контейнеров

0 голосов
/ 06 августа 2020

Вы по-прежнему сталкиваетесь с ошибкой, если пропустите эту строку?

- ./nginx/default.conf:/etc/nginx/conf.d/default.conf

Возможно, вам лучше использовать директиву Docker COPY, чтобы поместить этот файл в нужное место, поскольку, если вы пытаются использовать монтирование томов как средство для отражения текущих изменений в вашем коде без необходимости перестраивать образ, это не будет работать должным образом для файлов конфигурации Nginx, так как для вступления в силу этого потребуется перезапуск Nginx.

...