参考文档

注意点

  1. env_file指定env文件中定义的变量只能在docker容器内部使用,.env文件的变量可以在docker-compose中使用
  2. 如果想要自定义env文件名称,需要在docker-compose --env-file image.env 参数中指定

docker-compose.yml定义变量直接

    environment:
      KEV: VELUE
      KEV: VELUE
    environment:
    - KEV=VELUE
    - KEV=VELUE

案例:

version: '3'
services:
  db:
    image: 'docker.io/mysql:latest'
    environment:
      MYSQL_ROOT_PASSWORD: "liubei@2021"
      MYSQL_USER: 'liubei'
      MYSQL_PASSWORD: 'liubei@2021'
      MYSQL_DATABASE:  'liubeidb'


version: "3.1"
services:
  mysql:
    image: harbocto.xxx.com.cn/public/mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=liubei@2021
      - MYSQL_DATABASE=liubeidb
      - TZ=Asia/Shanghai

.env文件引入外部

容器启动中需要用到的变量,可以在.env文件中定义

引用当前目录下的env文件
  1. 在docker-compose.yml同级目录下面创建.env文件value不要加引号,引用会自动添加

  2. 在docker-compose.yml中使用使用key引入

version: "3.1"
services:
  mysql:
    image: harbocto.xxx.com.cn/public/mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD
      - MYSQL_DATABASE
      - TZ
    restart: on-failure
    ports:
      - 3306:3306
    volumes:
      - ./data:/var/lib/mysql


  1. docker-compose config 查看解析后的配置
[root@test mysql]# docker-compose config
services:
  mysql:
    environment:
      MYSQL_DATABASE: mydb
      MYSQL_ROOT_PASSWORD: liubei@2021
      TZ: Asia/Shanghai
    image: harbocto.xxx.com.cn/public/mysql:5.7
    ports:
    - 3306:3306/tcp
    restart: on-failure
    volumes:
    - /usr/local/mysql/data:/var/lib/mysql:rw
version: '3.1'

引用指定目录下的env文件

注意:这种方式定义的变量无法在compose文件种类使用

env_file:
	- ./test.env

解决方案:指定参数
docker-compose --env-file=XXXX -f docker-compose.yml up

变量的两种用途

前置: 向.env中添加 PORT_MYSQL=3306

docker-compose.yml使用

直接通过${XXX}来引用.env的值

version: "3.1"
services:
  mysql:
    ports:
      - $PORT_MYSQL:3306
container使用

直接在environment处写上.env中的key

version: "3.1"
services:
  mysql:
    image: harbocto.xxx.com.cn/public/mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD
      - MYSQL_DATABASE
      - TZ


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐