Docker无法挂载nginx

时间:2018-04-18 01:46:00

标签: docker nginx docker-toolbox

我在使用Docker Toolbox在Windows上首次设置Docker时遇到问题。除了nginx之外,一切都有效。

错误讯息:

ERROR: for web  Cannot start service web: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"rootfs_linux.go:58: mounting \\\"/c/wamp64/www/cathaypacific_career/ops/nginx/default.conf\\\" to rootfs \\\"/mnt/sda1/var/lib/docker/aufs/mnt/ff9b27a89b26b0e9091264d04d3a475f18469db3cf3be473c005e2d4c7d4b5ef\\\" at \\\"/mnt/sda1/var/lib/docker/aufs/mnt/ff9b27a89b26b0e9091264d04d3a475f18469db3cf3be473c005e2d4c7d4b5ef/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
ERROR: Encountered errors while bringing up the project.

Docker-compose config:

version: '3'

services:
  web:
    container_name: web
    image: nginx:1.13.3-alpine
    networks:
      - web_tier
    ports:
      - 80:80
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ../:/code
      - /code/ops/
    depends_on:
      - app
  app:
    container_name: app
    build: ./php/
    networks:
      - web_tier
      - app_tier
    expose:
      - '9000'
    volumes:
      - ./php/settings.conf:/usr/local/etc/php-fpm.d/settings.conf
      - ../:/code
      - /code/ops/
    working_dir: /code
    entrypoint: "/bin/sh -c"
    command:
      - "php-fpm"
    env_file: ../.env
    depends_on:
      - db
  db:
    container_name: db
    image: mysql:5.6.39
    networks:
      - app_tier
      - db_tier
    expose:
      - '3306'
    ports:
      - 3306:3306
    volumes:
       - db_data:/var/lib/mysql
       - ./db:/etc/mysql/conf.d
    restart: always
    env_file: ../.env
networks:
  web_tier:
    driver: bridge
  app_tier:
    driver: bridge
  db_tier:
    driver: bridge

volumes:
  db_data:

这个问题似乎与Nginx有关,而default.conf无法访问,或者app认为它是文件夹而不是文件。 我在线检查了这个问题,人们建议挂载C:文件夹,这样我就试着将它挂载到Oracle VirtualBox上并重新运行docker-compose up命令,但它没有解决问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我通过与Oracle VirtualBox VM default共享文件夹解决了相同的问题

enter image description here

共享您的项目文件夹,然后重新启动虚拟机。

您甚至可以使用如下命令  docker-machine stop defaultdocker-machine stop default

现在,您需要在撰写文件(.)中使用共享名(项目)而不是docker-compose.yml

对于您的情况,

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

应更改为

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

现在尝试使用docker-compose up

对我有用。