运行docker-compose up(卷设备问题)后,Nginx容器将无法构建

时间:2019-12-20 04:41:52

标签: docker nginx certbot

编辑:对于在Mac上运行的计算机,如果您收到以下消息,那是因为您没有指向主机上的正确文件路径。我一直在努力确保所有内容都在本地构建/运行,但最终它将托管在Digital Ocean上的linux机器上,并且我将不得不更改文件路径。

最初,我不了解Volumes的功能,但该视频确实使事情变得清晰:https://www.youtube.com/watch?v=p2PH_YPCsis


我目前正在编写一个Docker Compose YAML文件,以运行诸如Node.js应用程序,MongoDB和Nginx之类的服务。在构建应用程序和数据库时,Web服务器给我错误:

  

错误:对于Web服务器,无法启动服务Web服务器:b'挂载被拒绝:\ r \ n路径/ User / alan / test \ r \ nis未从OS X共享,并且Docker未知。\ r \ n您可以配置从Docker共享路径->首选项...->文件S

我不太确定为什么会给我这个错误,但我知道它与volumes/web-root/driver_opts/device卷有关。

有人能指出我正确的方向吗?

docker-compose.yml

version: '3'

services:
  nodejs:
    build: 
      context: .
      dockerfile: Dockerfile
    image: nodejs
    container_name: nodejs
    restart: unless-stopped
    env_file: .env
    environment:
      - MONGO_USERNAME=$MONGO_USERNAME
      - MONGO_PASSWORD=$MONGO_PASSWORD
      - MONGO_HOSTNAME=db
      - MONGO_PORT=$MONGO_PORT
      - MONGO_DB=$MONGO_DB 
    ports:
      - "81:8080"
    depends_on: 
      - db
    volumes:
      - .:/home/node/app
      - node_modules:/home/node/app/node_modules
    networks:
      - app-network
    command: ./wait-for.sh db:27017 -- /home/node/app/node_modules/.bin/nodemon index.js

  db:
    image: mongo:4.1.8-xenial
    container_name: db
    restart: unless-stopped
    env_file: .env
    environment:
      - MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME
      - MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD
    volumes:  
      - dbdata:/data/db   
    networks:
      - app-network  
    ports:
      - "27017:27017"

  webserver:
    image: nginx:mainline-alpine
    container_name: webserver
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - web-root:/var/www/html
      - ./nginx.conf:/etc/nginx/conf.d/nginx.conf
      - certbot-etc:/etc/letsencrypt
      - certbot-var:/var/lib/letsencrypt
    depends_on:
      - nodejs
      - db
    networks:
      - app-network

  certbot:
    image: certbot/certbot
    container_name: certbot
    volumes:
      - certbot-etc:/etc/letsencrypt
      - certbot-var:/var/lib/letsencrypt
      - web-root:/var/www/html
    depends_on:
      - webserver
    command: certonly --webroot --webroot-path=/var/www/html --email boyce.alan15@gmail.com --agree-tos --no-eff-email --staging -d bittap.io  -d www.bittap.io

volumes:
  certbot-etc:
  certbot-var:
  web-root:
    driver: local
    driver_opts:
      type: none
      device: /User/alan/test
      o: bind
  dbdata:
  node_modules:  

networks:
  app-network:
    driver: bridge

1 个答案:

答案 0 :(得分:1)

根据错误消息,您正在运行macOS和Docker 4 Mac。

正如Devid Maze所说,您在卷中的device:属性中犯了一个错误。

像这样更新volumes部分:

volumes:
  certbot-etc:
  certbot-var:
  web-root:
    driver: local
    driver_opts:
      type: none
      device: /Users/alan/test
      o: bind

清除所有内容,然后重试。