我正在使用 docker 上下文使用 3.8 docker-compose.yml 文件将应用程序(3 个容器 ... web/postgres/nginx)从 Windows 10 部署到远程 Ubuntu 20.04 服务器。远程上下文是 moby 类型,端点是 ssh://swright@xxx.xxxxxx.xxx。编排器是群,但我还没有实现。
在我添加秘密之前,一切都运行良好。现在无法创建 Web 容器,因为它说我的挂载路径无效('C:/run/secrets/secret_key.txt' 挂载路径必须是绝对的)。
Creating plantweb ... error
ERROR: for plantweb Cannot create container for service web: invalid mount config for type "bind": invalid mount path: 'C:/run/secrets/secret_key.txt' mount path must be absolute
它正在 C: 上寻找秘密文件告诉我它正在尝试挂载本地 Windows 文件,而它应该挂载我在遥控器上创建的 /run/secrets/secret_key.txt 文件。
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-67-generic x86_64)Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-67-generic x86_64)
...
Last login: Wed Mar 24 17:59:40 2021 from 70.51.98.164
swright@ubuntu2:~$ cd /run/secrets
swright@ubuntu2:/run/secrets$ ls
plant_api_key.txt secret_key.txt sendgrid_api_key.txt sendgrid_default_from_email.txt sql_password.txt sql_user.txt
swright@ubuntu2:/run/secrets$
我相信我已经完成了docker 文档中关于机密的描述。docker中是否存在秘密不尊重我所在的上下文的错误?还是我做错了什么?
这是我的 yml 文件。
version: '3.8'
services:
web:
container_name: plantweb
restart: always
build: ./django-plants/
volumes:
- static_volume:/usr/src/app/static
- media_volume:/usr/src/app/media
secrets:
- secret_key
- sql_user
- sql_password
- plant_api_key
- sendgrid_api_key
- sendgrid_default_from_email
env_file:
- ./.env.prod
expose:
- 8000
networks:
- nginx_network
- plants_network
depends_on:
- db
<snip ...>
secrets:
secret_key:
file: /run/secrets/secret_key.txt
sql_user:
file: /run/secrets/sql_user.txt
sql_password:
file: /run/secrets/sql_password.txt
plant_api_key:
file: /run/secrets/plant_api_key.txt
sendgrid_api_key:
file: /run/secrets/sendgrid_api_key.txt
sendgrid_default_from_email:
file: /run/secrets/sendgrid_default_from_email.txt
无论我使用什么上下文(本地或远程),docker-compose config 都会返回这个。
<snip>
secrets:
plant_api_key:
file: C:\run\secrets\plant_api_key.txt
secret_key:
file: C:\run\secrets\secret_key.txt
sendgrid_api_key:
file: C:\run\secrets\sendgrid_api_key.txt
sendgrid_default_from_email:
file: C:\run\secrets\sendgrid_default_from_email.txt
sql_password:
file: C:\run\secrets\sql_password.txt
sql_user:
file: C:\run\secrets\sql_user.txt
<snip>