Fra*_*y_V 28 docker docker-secrets health-check
我使用 Secrets 来通过使用 Postgres 作为数据库的 Docker 堆栈来管理用户名、密码和数据库名。我现在想使用Docker提供的健康检查功能。
docker-compose.yml
x-db-secrets: &db_secrets
- psql_user
- psql_pass
- psql_dbname
services:
db:
image: postgres:13.1
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER_FILE=/run/secrets/psql_user
- POSTGRES_DB_FILE=/run/secrets/psql_dbname
- POSTGRES_PASSWORD_FILE=/run/secrets/psql_pass
secrets: *db_secrets
healthcheck:
test: pg_isready -U myuser -d db_prod
interval: 10s
timeout: 3s
retries: 3
(... other services...)
volumes:
postgres_data:
static_content:
media_content:
secrets:
psql_user:
external: true
psql_pass:
external: true
psql_dbname:
external: true
Run Code Online (Sandbox Code Playgroud)
正如本节中可以指出的healthcheck:,我通过运行状况检查公开了数据库用户名和数据库名称。我的问题(根据答案进行一些后续行动):
想法?解决方法?
额外细节:
pri*_*ngi 41
您可以使用不带任何用户名/密码的pg_isready来检查容器是否“健康”。
bbepostgres:
image: postgres:14.2
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=pangea_local_dev
- PGUSER=postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready", "-d", "db_prod"]
interval: 30s
timeout: 60s
retries: 5
start_period: 80s
Run Code Online (Sandbox Code Playgroud)
这将完成与您想要的相同的事情。
参考: https: //github.com/peter-evans/docker-compose-healthcheck
Jos*_*ndo 35
.env因此,这可以通过使用文件并稍微修改您的文件来完成docker-compose.yml。
POSTGRES_HOST=db
POSTGRES_USER=root
POSTGRES_PASSWORD=password
POSTGRES_DB=dev
Run Code Online (Sandbox Code Playgroud)
services:
db:
image: postgres:13.1
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- .env
secrets: *db_secrets
healthcheck:
test: ["CMD-SHELL", "sh -c 'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}'"]
interval: 10s
timeout: 3s
retries: 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46818 次 |
| 最近记录: |