docker-stack.yml无效的卷types绑定

这是我的docker-stack.yml文件

version: "3" services: mysql: image: mysql:latest deploy: replicas: 1 update_config: parallelism: 1 restart_policy: condition: on-failure ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: <Censored> MYSQL_USER: <Censored> MYSQL_PASSWORD: <Censored> volumes: - ./db/data:/var/lib/mysql - ./db/logs:/var/log/mysql - ./db/config:/etc/mysql/conf.d php: image: wiput1999/php volumes: - ./web:/web nginx: image: nginx:latest ports: - "80:80" - "443:443" volumes: - ./code:/code:ro - ./site.conf:/etc/nginx/conf.d/default.conf - /etc/letsencrypt:/etc/letsencrypt - ./nginx/log:/var/log/nginx 

当我运行这个下面的堆栈时,我得到了mysql和nginx这个错误“types”绑定“的无效安assembly置:绑定源path不存在”

我不知道我的代码有什么问题。

bind是用于将主机上的目录(或文件)挂载容器中的挂载types。 所有的卷都是这样设置的。 所以你的一个源目录(或文件) 在主机上不存在。 检查每个这些:

  • ./db/data
  • ./db/logs
  • ./db/config
  • ./web
  • 。/码
  • ./site.conf
  • 在/ etc / letsencrypt
  • ./nginx/log

您可以执行ls -ld ./db/data ./db/logs ./db/config ./web ./code ./site.conf /etc/letsencrypt ./nginx/log >/dev/null并查看错误信息找出哪一个。

请考虑使用dockerconfiguration和docker机密来代替卷。

 version: "3" services: nginx: configs: - source: nginx_vhost target: /etc/nginx/conf.d/default.conf secrets: - ssl_private_key ... configs: nginx_vhost file: ./site.conf secrets: ssl_private_key: file: /etc/letsencrypt/private.key 

https://docs.docker.com/engine/swarm/configs/