Docker和MySQL:docker-compose文件不会创建任何秘密

时间:2019-08-07 13:54:45

标签: docker docker-compose docker-secrets

运行docker-compose up -d时,我的Docker容器不断重启。使用docker logs --tail 50 --follow --timestamps db检查日志时,出现以下错误:

/usr/local/bin/docker-entrypoint.sh: line 37: "/run/secrets/db_mysql_root_pw": No such file or directory

这可能意味着没有秘密。 docker secret ls的输出也没有提供任何秘密。

我的docker-compose.yml文件看起来像这样(不包括端口信息等):

version: '3.4'
services:
  db:
    image: mysql:8.0
    container_name: db
    restart: always
    environment:
      - MYSQL_USER_FILE="/run/secrets/db_mysql_user"
      - MYSQL_PASSWORD_FILE="/run/secrets/db_mysql_user_pw"
      - MYSQL_ROOT_PASSWORD_FILE="/run/secrets/db_mysql_root_pw"
    secrets:
      - db_mysql_user
      - db_mysql_user_pw
      - db_mysql_root_pw
    volumes:
      - "./mysql-data:/docker-entrypoint-initdb.d"
secrets:
  db_mysql_user:
    file: ./db_mysql_user.txt
  db_mysql_user_pw:
    file: ./db_mysql_user_pw.txt
  db_mysql_root_pw:
    file: ./db_mysql_root_pw.txt

在同一目录中,我有3个文本文件,它们仅包含环境变量的值。例如db_mysql_user_pw.txt包含password

我正在Windows主机上运行Linux容器。

1 个答案:

答案 0 :(得分:2)

这很愚蠢,但正在改变

environment:
  - MYSQL_USER_FILE="/run/secrets/db_mysql_user"
  - MYSQL_PASSWORD_FILE="/run/secrets/db_mysql_user_pw"
  - MYSQL_ROOT_PASSWORD_FILE="/run/secrets/db_mysql_root_pw"

environment:
  - MYSQL_USER_FILE=/run/secrets/db_mysql_user
  - MYSQL_PASSWORD_FILE=/run/secrets/db_mysql_user_pw
  - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_mysql_root_pw

使其有效。我仍然不知道为什么我看不到docker secret ls的秘密。