【问题标题】:Why docker swarm use the secrets path and not the secrets value?为什么 docker swarm 使用秘密路径而不是秘密值?
【发布时间】:2021-03-22 14:51:04
【问题描述】:

我想在 docker swarm secrets 中使用。 我初始化了 docker swarm。

我通过以下方式创建秘密:

echo "password1" | docker secret create my_mysql_wordpress_password -
echo "password2" | docker secret create my_mysql_root_password -

然后我部署堆栈: docker stack deploy -c mysql.yml mysql

mysql.yml 文件:

version: "3.7"

services:
  mysql:
    image: mariadb:latest
    ports:
      - "0.0.0.0:3306:3306"     
    deploy:
      replicas: 1
      labels:
        - "traefik.enable=false"
    environment:
        - MYSQL_USER=wordpress_admin
        - MYSQL_PASSWORD=/run/secrets/my_mysql_wordpress_password
        - MYSQL_ROOT_PASSWORD=/run/secrets/my_mysql_root_password
    secrets:
      - my_mysql_wordpress_password
      - my_mysql_root_password
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - traefik-backend

secrets:
  my_mysql_wordpress_password:
    external: true
  my_mysql_root_password:
    external: true


volumes:
  mysql_data:
    driver: local
    driver_opts:
       o: bind
       type: none
       device: /data/mysql_data

networks:
  traefik-backend:
    external: true

现在数据库服务器启动。 当我现在尝试连接到服务器时,来自 root 的密码不是“password2”(密码中的值),密码是“/run/secrets/my_mysql_root_password”

怎么了?为什么密码是运行字符串而不是密钥中的值?

【问题讨论】:

  • 我也面临同样的问题 - 你能找到答案吗?

标签: docker docker-swarm


【解决方案1】:

查看不同的文档后,似乎解决方案并不明确。我也不明白它是如何/为什么起作用的,但这是对我有用的:

version: "3.7"

services:
  mysql:
    image: mariadb:latest
    ports:
      - "0.0.0.0:3306:3306"     
    deploy:
      replicas: 1
      labels:
        - "traefik.enable=false"
    environment:
        - MYSQL_USER=wordpress_admin
        - MYSQL_PASSWORD_FILE=/run/secrets/my_mysql_wordpress_password
        - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/my_mysql_root_password
    secrets:
      - my_mysql_wordpress_password
      - my_mysql_root_password
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - traefik-backend

secrets:
  my_mysql_wordpress_password:
    external: true
  my_mysql_root_password:
    external: true
...

将“_FILE”添加到环境变量中就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2020-02-04
    相关资源
    最近更新 更多