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

 更新时间:2025年07月09日 09:05:45   作者:徐福记c  
这篇文章主要介绍了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 文件来管理环境变量,使项目配置更加灵活和安全。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 带你快速了解Docker和k8s的使用及说明

    带你快速了解Docker和k8s的使用及说明

    这篇文章主要介绍了带你快速了解Docker和k8s的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • docker/docker desktop for window环境下创建本地镜像仓库方式

    docker/docker desktop for window环境下创建本地镜像仓库方式

    这篇文章主要介绍了docker/docker desktop for window环境下创建本地镜像仓库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • SpringCloud基于Docker和Docker-Compose的项目部署过程

    SpringCloud基于Docker和Docker-Compose的项目部署过程

    本文介绍了如何卸载旧版本Docker、更新系统、安装Docker及其依赖,并设置国内镜像源以加快下载速度,详细说明了如何安装Docker Compose、配置镜像加速器,并展示了如何使用Docker Compose部署SpringCloud项目,提供了更新和重启容器的方法
    2024-10-10
  • 超级简洁的使用YUM安装docker

    超级简洁的使用YUM安装docker

    这篇文章主要给大家介绍了关于使用YUM安装docker的相关资料,内容简明扼要并且容易理解,绝对能使你眼前一亮,需要的朋友可以参考下
    2023-08-08
  • docker 安装 php-fpm 服务 / 扩展 / 配置的示例教程详解

    docker 安装 php-fpm 服务 / 扩展 / 配置的示例教程详解

    这篇文章主要介绍了docker 安装 php-fpm 服务 / 扩展 / 配置,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • docker如何查询指定名字的容器id

    docker如何查询指定名字的容器id

    要查询指定名字的Docker容器ID,可以使用命令 docker ps -a --filter "name=CONTAINER_NAME" -q,该命令将返回指定名称的容器ID,如果存在多个相同名称的容器,则返回所有这些容器的ID
    2025-03-03
  • Docker容器访问宿主机网络的方法

    Docker容器访问宿主机网络的方法

    这篇文章主要介绍了Docker容器访问宿主机网络的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Docker中搭建FastDFS文件系统(多图教程)

    Docker中搭建FastDFS文件系统(多图教程)

    这篇文章主要介绍了Docker中搭建FastDFS文件系统(多图教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 使用Docker搭建Vsftpd 的 FTP 服务的详细过程

    使用Docker搭建Vsftpd 的 FTP 服务的详细过程

    FTP 基础FTP 需要两个端口,一个是数据端口,一个是控制端口,这篇文章主要介绍了使用Docker搭建Vsftpd的FTP服务,需要的朋友可以参考下
    2022-08-08
  • docker-compose.yml参数的用法(配置文件)

    docker-compose.yml参数的用法(配置文件)

    这篇文章主要介绍了docker-compose.yml参数的用法(配置文件),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论