在Docker中配置和管理環(huán)境變量的詳細(xì)指南
一、在 Dockerfile 中設(shè)置環(huán)境變量
使用 ENV
指令設(shè)置環(huán)境變量:
FROM alpine ENV TZ=Asia/Shanghai ENV LANG=C.UTF-8 ENV APP_ENV=production
這些變量在容器構(gòu)建時(shí)和運(yùn)行時(shí)都可用。
二、在 docker run 時(shí)傳入環(huán)境變量
1. 使用 -e 傳遞單個(gè)變量:
docker run -e APP_ENV=dev -e TZ=Asia/Shanghai my-image
2. 使用 --env-file 加載多個(gè)變量:
創(chuàng)建 .env
文件(每行一個(gè)):
APP_ENV=dev TZ=Asia/Shanghai DB_HOST=127.0.0.1 DB_USER=root
然后運(yùn)行容器時(shí)加載:
docker run --env-file .env my-image
三、在 docker-compose.yml 中配置環(huán)境變量
方法 1:直接在 environment: 中配置
services: app: image: my-app environment: - APP_ENV=dev - DB_HOST=localhost
方法 2:引用 .env 文件(自動讀?。?/h3>
.env
文件內(nèi)容:
APP_ENV=production DB_HOST=db.local
Compose 文件中直接使用 ${VAR}
:
services: app: image: my-app environment: - APP_ENV=${APP_ENV} - DB_HOST=${DB_HOST}
注意: Compose 默認(rèn)會自動讀取同目錄下的 .env 文件(無需額外指定)。
四、容器內(nèi)部如何讀取環(huán)境變量?
進(jìn)入容器后使用:
docker exec -it my-container sh # 查看環(huán)境變量 env # 讀取單個(gè)變量 echo $APP_ENV
五、注意事項(xiàng)與最佳實(shí)踐
問題 | 建議 |
---|---|
敏感信息(如密碼) | 避免寫在 Dockerfile,建議運(yùn)行時(shí)注入或用 Secret 管理 |
多環(huán)境配置 | 使用 .env.dev, .env.prod 區(qū)分不同環(huán)境 |
配置優(yōu)先級 | docker run -e > ENV in Dockerfile |
修改變量重啟容器 | 變量更改后必須重啟容器才生效 |
六、查看和調(diào)試容器中的環(huán)境變量
查看運(yùn)行中容器的環(huán)境變量:
docker inspect <容器名> | grep -A 10 "Env"
示例輸出:
"Env": [ "APP_ENV=dev", "TZ=Asia/Shanghai" ]
七、環(huán)境變量注入 Java 程序(示例)
在 Spring Boot 項(xiàng)目中配置:
@Value("${APP_ENV}") private String appEnv;
啟動參數(shù)中注入:
docker run -e APP_ENV=dev my-spring-app
總結(jié)
場景 | 用法 |
---|---|
Dockerfile 中寫死變量 | ENV KEY=value |
啟動時(shí)傳變量 | -e KEY=value or --env-file |
Compose 配置變量 | environment: + .env 文件 |
動態(tài)配置/安全注入 | 推薦外部傳入,不寫死在鏡像中 |
如果你需要:
- 在 Docker 容器中讀取數(shù)據(jù)庫配置、環(huán)境標(biāo)識等,
- 使用
.env
文件多環(huán)境切換, - 或你想讓 Java 程序讀取環(huán)境變量作為配置
到此這篇關(guān)于在Docker中配置和管理環(huán)境變量的詳細(xì)指南的文章就介紹到這了,更多相關(guān)Docker配置和管理環(huán)境變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker容器內(nèi)安裝ps命令的詳細(xì)操作步驟
在 Docker 容器的日常管理和故障排查過程中,ps命令是一個(gè)不可或缺的工具,當(dāng)我們在容器內(nèi)執(zhí)行ps命令時(shí),可能會遇到報(bào)錯(cuò),下面我們就來看看如何根據(jù)不同的 Linux 發(fā)行版,采用相應(yīng)的方法來安裝ps命令吧2025-06-06詳解Docker創(chuàng)建支持ssh服務(wù)的容器和鏡像
本篇文章主要介紹了詳解Docker創(chuàng)建支持ssh服務(wù)的容器和鏡像,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Docker實(shí)現(xiàn)同Ip網(wǎng)段聯(lián)通的實(shí)現(xiàn)
這篇文章主要介紹了Docker實(shí)現(xiàn)同Ip網(wǎng)段聯(lián)通的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12關(guān)于docker?compose安裝redis集群的問題(集群擴(kuò)容、集群收縮)
這篇文章主要介紹了docker?compose安裝redis集群、集群擴(kuò)容、集群收縮,主要包括redis配置信息模板,編寫批量生成配置文件腳本的相關(guān)命令,需要的朋友參考下吧2022-03-03深入了解docker(docker鏡像、容器、倉庫的基本概念)
本文重點(diǎn)給大家介紹docker鏡像、容器、倉庫的基本概念,感興趣的朋友跟著小編一起學(xué)習(xí)吧2016-10-10