在Docker中配置和管理環(huán)境變量的詳細指南
一、在 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)建時和運行時都可用。
二、在 docker run 時傳入環(huán)境變量
1. 使用 -e 傳遞單個變量:
docker run -e APP_ENV=dev -e TZ=Asia/Shanghai my-image
2. 使用 --env-file 加載多個變量:
創(chuàng)建 .env 文件(每行一個):
APP_ENV=dev TZ=Asia/Shanghai DB_HOST=127.0.0.1 DB_USER=root
然后運行容器時加載:
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 默認會自動讀取同目錄下的 .env 文件(無需額外指定)。
四、容器內(nèi)部如何讀取環(huán)境變量?
進入容器后使用:
docker exec -it my-container sh # 查看環(huán)境變量 env # 讀取單個變量 echo $APP_ENV
五、注意事項與最佳實踐
| 問題 | 建議 |
|---|---|
| 敏感信息(如密碼) | 避免寫在 Dockerfile,建議運行時注入或用 Secret 管理 |
| 多環(huán)境配置 | 使用 .env.dev, .env.prod 區(qū)分不同環(huán)境 |
| 配置優(yōu)先級 | docker run -e > ENV in Dockerfile |
| 修改變量重啟容器 | 變量更改后必須重啟容器才生效 |
六、查看和調(diào)試容器中的環(huán)境變量
查看運行中容器的環(huán)境變量:
docker inspect <容器名> | grep -A 10 "Env"
示例輸出:
"Env": [
"APP_ENV=dev",
"TZ=Asia/Shanghai"
]
七、環(huán)境變量注入 Java 程序(示例)
在 Spring Boot 項目中配置:
@Value("${APP_ENV}")
private String appEnv;
啟動參數(shù)中注入:
docker run -e APP_ENV=dev my-spring-app
總結(jié)
| 場景 | 用法 |
|---|---|
| Dockerfile 中寫死變量 | ENV KEY=value |
| 啟動時傳變量 | -e KEY=value or --env-file |
| Compose 配置變量 | environment: + .env 文件 |
| 動態(tài)配置/安全注入 | 推薦外部傳入,不寫死在鏡像中 |
如果你需要:
- 在 Docker 容器中讀取數(shù)據(jù)庫配置、環(huán)境標識等,
- 使用
.env文件多環(huán)境切換, - 或你想讓 Java 程序讀取環(huán)境變量作為配置
到此這篇關(guān)于在Docker中配置和管理環(huán)境變量的詳細指南的文章就介紹到這了,更多相關(guān)Docker配置和管理環(huán)境變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Docker配置redis sentinel哨兵的方法步驟
本文主要介紹了Docker配置redis sentinel哨兵的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
docker 安裝nacos并配置數(shù)據(jù)庫的教程詳解
這篇文章主要介紹了docker 安裝nacos并配置數(shù)據(jù)庫的教程詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
docker運行PostgreSQL數(shù)據(jù)庫維護執(zhí)行腳本備份數(shù)據(jù)庫與更新表結(jié)構(gòu)的方法
這篇文章主要介紹了docker運行PostgreSQL數(shù)據(jù)庫維護,執(zhí)行腳本備份數(shù)據(jù)庫與更新表結(jié)構(gòu),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
docker 命令報異常permission denied的解決方案
這篇文章主要介紹了docker 命令報異常permission denied的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Docker實現(xiàn)容器化的分布式鎖服務(wù)RedisLock的快速搭建
本文主要介紹了Docker實現(xiàn)容器化的分布式鎖服務(wù)RedisLock的快速搭建,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04

