1

我的 Docker 容器在运行时不断重启docker-compose up -d。使用 检查日志时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 容器。

4

1 回答 1

6

这很愚蠢,但正在改变

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

于 2019-08-07T14:02:29.703 回答