美文网首页
docker-compose 环境变量问题

docker-compose 环境变量问题

作者: 程序员同行者 | 来源:发表于2018-08-02 17:16 被阅读0次

    每次部署必需要修改的配置从交付件里独立出来,通过docker-compose传变量覆盖原有配置,记录下, 以备查阅

    [root@test03 test]# cat docker-compose.yml 
    version: '2'
    services:
      mysql:
        image: test_db:v1
        container_name: xx-mysql
        restart: always
        networks:
          - nets
        environment:
          - MYSQL_ROOT_PASSWORD=xxx0209
        ports:
          - 3306:3306
        volumes:
          - /opt/data/mysql:/var/lib/mysql:z
      redis:
        image: test_redis:v1
        container_name: xx-redis
        restart: always
        networks:
          - nets
        ports:
          - 6379:6379
      admin:
        image: test_admin:v1
        container_name: xx-admin
        restart: always
        # 使用nets网络
        networks:
          - nets
        env_file:
          - ./.env
        environment:
          # 引用环境变量,最终是传入容器里交付件的启动命令中
          # 例 java -jar -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08 -Xmx1433m -Dglobal.domain.inter=http://10.90.2.103:8080 ./app.jar
          - JAVA_OPTS=-Duser.timezone=GMT+08 ${Xmx} -D${inter}
        depends_on:
          - mysql
          - redis
        ports:
          - ${pub_port}:8015
    # 创建自定义网络
    networks:
      nets:
        external: false
    
    
    • 容器间应用交互使用container_name定义的名称
      Xmx,inter,pub_port是我用到的环境变量,通过查阅文档,变量可以定义到一个文件中,如定义到.env中,如下:
    [root@test03 test]# cat .env 
    # memory
    Xmx=-Xmx1433m
    # open ports
    pub_port=8080
    # inter 
    inter=global.domain.inter=http://10.90.2.103:8080
    

    注意: env_file和environment中定义的环境变量是传给container用的而不是在docker-compose.yml中的环境变量用的
    docker-compose.yml中的环境变量${VARIABLE:-default}引用的是在.env中定义的或者同个shell export出来的

    可以通过命令查看变量已经被引用了

    [root@test03 test]# docker-compose config
    ...
        environment:
          JAVA_OPTS: -Duser.timezone=GMT+08 -Xmx1433m -Dglobal.domain.inter=http://10.90.2.103:8080
    ...
    
    • 建议env_file 引入的文件名为.env,最好不要使用其他名称
    1. 优点: .env文件变更会实时更新docker-compose中的引用,使用其他名称不会实时更新docker-compose中的引用,使用其他名称在docker-compose中引用有时会WARNING: The DB_DIR variable is not set. Defaulting to a blank string.
    2. 缺点: 自定义名称不方便

    相关文章

      网友评论

          本文标题:docker-compose 环境变量问题

          本文链接:https://www.haomeiwen.com/subject/phjsvftx.html