docker中设置环境变量的多种方式

在生产环境中通过容器/Docker 设置环境变量的实现方法,包括是否可以在 Docker 中使用 .env 文件的相关内容:

在 Docker 中设置环境变量的多种方式

  • 在 Dockerfile 中设置

    • 使用 ENV 指令设置环境变量,示例代码如下:

      FROM ubuntu:20.04
      ENV MY_APP_PORT=8080
      ENV MY_APP_ENV=production
      RUN echo "Starting app on port $MY_APP_PORT in $MY_APP_ENV mode"
      

      这些环境变量会在容器的整个生命周期中生效,可以在容器内的任何进程访问。

  • 在 docker run 命令中设置

    • 使用 --env-e 标志为容器设置环境变量,示例命令如下:

      sudo docker run -d \
          --name my_container \
          --env "ENV01=value01" \
          --env "ENV02=value02" \
          my_image
      

      也可以使用 --env-file 标志指定一个包含环境变量的文件来设置环境变量,示例命令如下:

      sudo docker run -d \
          --name my_container \
          --env-file ./envFile \
          my_image
      

      其中 envFile 文件的内容格式为每行一个变量,如 env01=value01

  • 在 docker-compose.yml 文件中设置

    • 可以使用 environment 属性直接设置环境变量,支持列表和映射语法,示例代码如下:

      services:
        web:
          image: nginx:latest
          environment:
            - ENV01=value01
            - ENV02=value02
      

      或者使用 env_file 属性指定环境变量文件,示例代码如下:

      services:
        web:
          image: nginx:latest
          env_file:
            - ./envFile
      

      这样可以将环境变量与主配置文件分开,便于管理。

Docker 中的 .env 文件

  • 创建 .env 文件 :在项目根目录下创建 .env 文件,在文件中定义一系列键值对形式的环境变量,示例内容如下:

    DB_HOST=localhost
    DB_USER=root
    DB_PASSWORD=example
    TZ=Asia/Shanghai
    
  • 在 docker-compose.yml 中引用 .env 文件 :在 docker-compose.yml 文件中,可以通过 ${VARIABLE_NAME} 语法引用 .env 文件中的变量,示例代码如下:

    version: '3'
    services:
      web:
        image: 'nginx:${NGINX_VERSION}'
        environment:
          - DB_HOST=${DB_HOST}
          - DB_USER=${DB_USER}
          - DB_PASSWORD=${DB_PASSWORD}
    

    其中 NGINX_VERSIONDB_HOSTDB_USERDB_PASSWORD 都会在 .env 文件中查找对应的值。

  • 注意事项 :Docker Compose 会在启动容器时读取 .env 文件中的环境变量并应用到容器中,但如果容器已经存在,修改 .env 文件后需要通过 docker-compose down 命令停止并删除旧容器,再通过 docker-compose up -d 命令重新创建容器才能使新的环境变量生效。或者也可以使用 docker-compose up -d --force-recreate 命令强制重建容器。

通过以上方法,可以在生产环境中通过容器/Docker 设置环境变量,并且可以使用 .env 文件来管理环境变量,使项目配置更加灵活和安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值