如何使用 env_file 在 docker-compose 中隐藏 Mysql 密码

man*_*man 0 mysql docker docker-compose

version: '3'

services:
  db:
    image: "mysql:5.7"
    volumes:
      - data-mysql:/var/lib/mysql

    ports:
      - '3306:3306'

    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

volumes:
  data-mysql:
    driver: local
Run Code Online (Sandbox Code Playgroud)

谢谢曼尼

Dan*_*nyB 5

不需要 env 文件。如果你在 docker composeenvironment定义中只使用变量名,它的值会自动从你的主机传输到容器:

services:
  db:
    image: "mysql:5.7"
    ports: ['3306:3306']
    environment:
      MYSQL_ROOT_PASSWORD: 
Run Code Online (Sandbox Code Playgroud)

文档

只有一个键的环境变量被解析为它们在运行 Compose 的机器上的值,这对于秘密或特定于主机的值很有帮助。

如果出于某种原因,您想要或需要使用 env 文件,您还可以:

services:
  db:
    image: "mysql:5.7"
    ports: ['3306:3306']
    env_file:
    - production.env
Run Code Online (Sandbox Code Playgroud)

并在您的production.env文件(或任何您命名的文件)中,只需放置以下行key=value

MYSQL_ROOT_PASSWORD=7op-s3cr37
Run Code Online (Sandbox Code Playgroud)

另请参阅“env_file”配置选项