在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 文件(自動(dòng)讀取)
.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)會(huì)自動(dòng)讀取同目錄下的 .env 文件(無(wú)需額外指定)。
四、容器內(nèi)部如何讀取環(huán)境變量?
進(jìn)入容器后使用:
docker exec -it my-container sh # 查看環(huán)境變量 env # 讀取單個(gè)變量 echo $APP_ENV
五、注意事項(xiàng)與最佳實(shí)踐
| 問(wèn)題 | 建議 |
|---|---|
| 敏感信息(如密碼) | 避免寫在 Dockerfile,建議運(yùn)行時(shí)注入或用 Secret 管理 |
| 多環(huán)境配置 | 使用 .env.dev, .env.prod 區(qū)分不同環(huán)境 |
| 配置優(yōu)先級(jí) | 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;
啟動(dòng)參數(shù)中注入:
docker run -e APP_ENV=dev my-spring-app
總結(jié)
| 場(chǎng)景 | 用法 |
|---|---|
| Dockerfile 中寫死變量 | ENV KEY=value |
| 啟動(dòng)時(shí)傳變量 | -e KEY=value or --env-file |
| Compose 配置變量 | environment: + .env 文件 |
| 動(dòng)態(tài)配置/安全注入 | 推薦外部傳入,不寫死在鏡像中 |
如果你需要:
- 在 Docker 容器中讀取數(shù)據(jù)庫(kù)配置、環(huán)境標(biāo)識(shí)等,
- 使用
.env文件多環(huán)境切換, - 或你想讓 Java 程序讀取環(huán)境變量作為配置
到此這篇關(guān)于在Docker中配置和管理環(huán)境變量的詳細(xì)指南的文章就介紹到這了,更多相關(guān)Docker配置和管理環(huán)境變量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
最詳細(xì)的docker中安裝并配置redis(圖文詳解)
這篇文章主要介紹了最詳細(xì)的docker中安裝并配置redis(圖文詳解),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
使用Docker配置redis sentinel哨兵的方法步驟
本文主要介紹了Docker配置redis sentinel哨兵的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
docker 安裝nacos并配置數(shù)據(jù)庫(kù)的教程詳解
這篇文章主要介紹了docker 安裝nacos并配置數(shù)據(jù)庫(kù)的教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
清除docker無(wú)用鏡像實(shí)現(xiàn)過(guò)程
文章介紹了查看和清理Docker占用資源的方法,包括使用docker container ls、image ls、volume ls等命令了解資源狀態(tài),并通過(guò)docker system prune刪除未使用容器、鏡像、網(wǎng)絡(luò)及緩存,同時(shí)強(qiáng)調(diào)刪除鏡像前需先移除引用容器2025-08-08
docker運(yùn)行PostgreSQL數(shù)據(jù)庫(kù)維護(hù)執(zhí)行腳本備份數(shù)據(jù)庫(kù)與更新表結(jié)構(gòu)的方法
這篇文章主要介紹了docker運(yùn)行PostgreSQL數(shù)據(jù)庫(kù)維護(hù),執(zhí)行腳本備份數(shù)據(jù)庫(kù)與更新表結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
docker 命令報(bào)異常permission denied的解決方案
這篇文章主要介紹了docker 命令報(bào)異常permission denied的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Docker實(shí)現(xiàn)容器化的分布式鎖服務(wù)RedisLock的快速搭建
本文主要介紹了Docker實(shí)現(xiàn)容器化的分布式鎖服務(wù)RedisLock的快速搭建,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04

