Python docker-如何从env.ini文件outide为docker-compose.yml文件设置环境数据库?
这是我的Python docker-如何从env.ini文件outide为docker-compose.yml文件设置环境数据库?,python,django,docker,Python,Django,Docker,这是我的docker compose.yml,我硬编码数据库的信息 为了安全起见,我想从我的env.ini文件中输入,然后将其推送到GitLab,但不知道如何操作 version: "3.8" services: db: image: postgres environment: - POSTGRES_DB=####### Hide these information and take it from
docker compose.yml
,我硬编码数据库的信息
为了安全起见,我想从我的env.ini
文件中输入,然后将其推送到GitLab,但不知道如何操作
version: "3.8"
services:
db:
image: postgres
environment:
- POSTGRES_DB=####### Hide these information and take it from
- POSTGRES_USER=##### another file when running it
- POSTGRES_HOST=172#####
- POSTGRES_PASSWORD=#########
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
另外:我的文件env.ini
非常复杂,因为它包含很多其他信息,它看起来像这样:
[sv_info]
host = #########
user = ########
password = ########
database = #
venus_base_url = #################
venus_auth_key =
cargo_base_url = #################
cargo_awb_acckey = #################
cargo_awb_cusnum = #################
cargo_awb_user = #################
cargo_awb_revkey = #################
[heremap_info]
url = #################
api_key = #################
通常,我在Python
中使用from configparser import configparser
在代码中使用此env.ini
。- 添加文件settings.ini.template,如:
- 将其添加到存储库中
- 在项目中添加变量
和用户名
密码
gitlab ci.yml
中,在脚本之前执行以下操作:
sed -e 's/@@USERNAME@@/'$THE_USERNAME'/' -e 's/@@PASSWORD@@/'$THE_PASSWORD'/' settings.ini.template > settings.ini.
- 添加文件settings.ini.template,如:
- 将其添加到存储库中
- 在项目中添加变量
和用户名
密码
gitlab ci.yml
中,在脚本之前执行以下操作:
sed -e 's/@@USERNAME@@/'$THE_USERNAME'/' -e 's/@@PASSWORD@@/'$THE_PASSWORD'/' settings.ini.template > settings.ini.
首先,带有环境变量的文件应命名为
.env
,其内容如下:
POSTGRES_DB=cookies
POSTGRES_USER=jamie
POSTGRES_PASSWORD=oliver
POSTGRES_HOST=127.0.0.1
这些环境变量应该传递给容器。要实现这一点,您应该更新docker compose配置,如下所示:
version: "3.8"
services:
db:
image: postgres
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_HOST=${POSTGRES_HOST}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
然后在django设置中:
导入操作系统
# ...
数据库={
“默认值”:{
“引擎”:“django.db.backends.postgresql_psycopg2”,
“名称”:os.environ['POSTGRES_DB'],
“用户”:os.environ['POSTGRES_USER'],
“密码”:os.environ['POSTGRES_PASSWORD'],
'HOST':os.environ['POSTGRES_HOST'],
“端口”:5432,
},
}
我还强烈建议使用包读取环境变量的值
从环境导入环境
env=env()
IS_ENABLED=env.bool('IS_ENABLED',默认值=True)
这意味着,即使环境变量
已启用
值为True
(字符串)environs将其转换为bool
首先,您的环境变量文件应命名为.env
,其内容如下:
POSTGRES_DB=cookies
POSTGRES_USER=jamie
POSTGRES_PASSWORD=oliver
POSTGRES_HOST=127.0.0.1
这些环境变量应该传递给容器。要实现这一点,您应该更新docker compose配置,如下所示:
version: "3.8"
services:
db:
image: postgres
environment:
- POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_HOST=${POSTGRES_HOST}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
然后在django设置中:
导入操作系统
# ...
数据库={
“默认值”:{
“引擎”:“django.db.backends.postgresql_psycopg2”,
“名称”:os.environ['POSTGRES_DB'],
“用户”:os.environ['POSTGRES_USER'],
“密码”:os.environ['POSTGRES_PASSWORD'],
'HOST':os.environ['POSTGRES_HOST'],
“端口”:5432,
},
}
我还强烈建议使用包读取环境变量的值
从环境导入环境
env=env()
IS_ENABLED=env.bool('IS_ENABLED',默认值=True)
这意味着,即使环境变量已启用
值为True
(字符串)environs也会将其转换为bool
检查此项了解更多信息检查此项了解更多信息