docker中設(shè)置環(huán)境變量的多種實現(xiàn)方式
在生產(chǎn)環(huán)境中通過容器/Docker 設(shè)置環(huán)境變量的實現(xiàn)方法,包括是否可以在 Docker 中使用 .env 文件的相關(guān)內(nèi)容:
在 Docker 中設(shè)置環(huán)境變量的多種方式
在 Dockerfile 中設(shè)置
使用 ENV 指令設(shè)置環(huán)境變量,示例代碼如下:
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"
這些環(huán)境變量會在容器的整個生命周期中生效,可以在容器內(nèi)的任何進(jìn)程訪問。
在 docker run 命令中設(shè)置
使用 --env 或 -e 標(biāo)志為容器設(shè)置環(huán)境變量,示例命令如下:
sudo docker run -d \
--name my_container \
--env "ENV01=value01" \
--env "ENV02=value02" \
my_image也可以使用 --env-file 標(biāo)志指定一個包含環(huán)境變量的文件來設(shè)置環(huán)境變量,示例命令如下:
sudo docker run -d \
--name my_container \
--env-file ./envFile \
my_image其中 envFile 文件的內(nèi)容格式為每行一個變量,如 env01=value01。
在 docker-compose.yml 文件中設(shè)置
可以使用 environment 屬性直接設(shè)置環(huán)境變量,支持列表和映射語法,示例代碼如下:
services:
web:
image: nginx:latest
environment:
- ENV01=value01
- ENV02=value02或者使用 env_file 屬性指定環(huán)境變量文件,示例代碼如下:
services:
web:
image: nginx:latest
env_file:
- ./envFile這樣可以將環(huán)境變量與主配置文件分開,便于管理。
Docker 中的.env文件
創(chuàng)建 .env 文件 :在項目根目錄下創(chuàng)建 .env 文件,在文件中定義一系列鍵值對形式的環(huán)境變量,示例內(nèi)容如下:
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_VERSION、DB_HOST、DB_USER 和 DB_PASSWORD 都會在 .env 文件中查找對應(yīng)的值。
注意事項
Docker Compose 會在啟動容器時讀取 .env 文件中的環(huán)境變量并應(yīng)用到容器中,但如果容器已經(jīng)存在,修改 .env 文件后需要通過 docker-compose down 命令停止并刪除舊容器,再通過 docker-compose up -d 命令重新創(chuàng)建容器才能使新的環(huán)境變量生效。
或者也可以使用 docker-compose up -d --force-recreate 命令強制重建容器。
通過以上方法,可以在生產(chǎn)環(huán)境中通過容器/Docker 設(shè)置環(huán)境變量,并且可以使用 .env 文件來管理環(huán)境變量,使項目配置更加靈活和安全。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉庫方式
這篇文章主要介紹了docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03
SpringCloud基于Docker和Docker-Compose的項目部署過程
本文介紹了如何卸載舊版本Docker、更新系統(tǒng)、安裝Docker及其依賴,并設(shè)置國內(nèi)鏡像源以加快下載速度,詳細(xì)說明了如何安裝Docker Compose、配置鏡像加速器,并展示了如何使用Docker Compose部署SpringCloud項目,提供了更新和重啟容器的方法2024-10-10
docker 安裝 php-fpm 服務(wù) / 擴展 / 配置的示例教程詳解
這篇文章主要介紹了docker 安裝 php-fpm 服務(wù) / 擴展 / 配置,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
Docker中搭建FastDFS文件系統(tǒng)(多圖教程)
這篇文章主要介紹了Docker中搭建FastDFS文件系統(tǒng)(多圖教程),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
使用Docker搭建Vsftpd 的 FTP 服務(wù)的詳細(xì)過程
FTP 基礎(chǔ)FTP 需要兩個端口,一個是數(shù)據(jù)端口,一個是控制端口,這篇文章主要介紹了使用Docker搭建Vsftpd的FTP服務(wù),需要的朋友可以參考下2022-08-08
docker-compose.yml參數(shù)的用法(配置文件)
這篇文章主要介紹了docker-compose.yml參數(shù)的用法(配置文件),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

