[英]How to properly add persistence in docker-compose deployment including postgres and keycloak
我正在尝试创建一个持久的 docker-compose 部署。 以前我通过简单地将本地目录安装到 docker 容器来完成此操作。 它工作得很好。 但是,当我尝试将 keycloak 添加到组合中时,它会产生错误。
工作撰写文件:
version: '3'
volumes:
postgres_data:
driver: local
services:
postgres:
image: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
- ./init:/docker-entrypoint-initdb.d/
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password
ports:
- 5432:5432
keycloak:
image: quay.io/keycloak/keycloak:latest
environment:
DB_VENDOR: POSTGRES
DB_ADDR: postgres
DB_DATABASE: keycloak
DB_USER: keycloak
DB_SCHEMA: public
DB_PASSWORD: password
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: admin
ports:
- 8080:8080
depends_on:
- postgres
非工作撰写文件:
version: '3'
services:
postgres:
image: postgres
volumes:
- ./postgres_data:/var/lib/postgresql/data
- ./init:/docker-entrypoint-initdb.d/
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: password
ports:
- 5432:5432
keycloak:
image: quay.io/keycloak/keycloak:latest
environment:
DB_VENDOR: POSTGRES
DB_ADDR: postgres
DB_DATABASE: keycloak
DB_USER: keycloak
DB_SCHEMA: public
DB_PASSWORD: password
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: admin
ports:
- 8080:8080
depends_on:
- postgres
它生成的错误示例:
keycloak_1 | 19:18:17,191 FATAL [org.keycloak.services] (ServerService Thread Pool -- 61) Error during startup: java.lang.RuntimeException: Failed to connect to database
keycloak_1 | 19:18:17,631 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([("subsystem" => "microprofile-metrics-smallrye")]): java.lang.NullPointerException
keycloak_1 | 19:18:17,639 ERROR [org.jboss.as.server] (ServerService Thread Pool -- 46) WFLYSRV0022: Deploy of deployment "keycloak-server.war" was rolled back with no failure message
从错误消息来看,即使使用了关键字“depends”,似乎也没有第一次生成数据库。
问题是如何修复它/解决它。
由于没有人正确回答我的问题,这是我发现使用依赖项的解决方案。 向 postgresql 清单添加以下行:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U keycloak"]
interval: 10s
timeout: 5s
retries: 5
和钥匙斗篷:
depends_on:
postgres-database:
condition: service_healthy
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.