2

我正在使用 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>
4

0 回答 0