编辑:对于在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
答案 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
清除所有内容,然后重试。