docker compose 关闭后数据库在 docker 中不持久



我正在尝试使用docker容器和本地卷来设置cyberark的congur解决方案,以维护持久数据。我遵循了以下链接中的说明:https://github.com/cyberark/conjur-quickstart

我正在经历的是,当我表演";docker compose down";然后把它拿回来,它以一个空白系统开始,没有保存任何东西。

这是我正在使用的docker-compose.yml文件:

version: '3'  
services:    
openssl:  
image: cyberark/conjur  
container_name: openssl  
entrypoint:  
- openssl  
- req  
- -newkey  
- rsa:2048  
- -days  
- "365"  
- -nodes  
- -x509  
- -config  
- /tmp/conf/tls.conf  
- -extensions  
- v3_ca  
- -keyout  
- /tmp/conf/nginx.key  
- -out  
- /tmp/conf/nginx.crt  
volumes:  
- ./conf/tls/:/tmp/conf  
bot_app:  
image: cfmanteiga/alpine-bash-curl-jq  
privileged: true  
container_name: bot_app  
command: tail -F anything  
volumes:  
- ./program.sh:/tmp/program.sh  
restart: on-failure  

database:  
image: postgres:10.16  
container_name: postgres_database  
environment:  
POSTGRES_HOST_AUTH_METHOD: trust  
ports:  
- 8432:5432  
volumes:  
- /share/Container/docker/conjur:/var/lib/postgresql/data  

pgadmin:  
#    [https]://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html  
image: dpage/pgadmin4  
environment:  
PGADMIN_DEFAULT_EMAIL: user@domain.com  
PGADMIN_DEFAULT_PASSWORD: SuperSecret  
ports:  
- 18081:80  

conjur:  
image: cyberark/conjur  
container_name: conjur_server  
command: server  
environment:  
DATABASE_URL: postgres://postgres@database/postgres  
CONJUR_DATA_KEY:  
CONJUR_AUTHENTICATORS:  
depends_on:  
- database  
restart: on-failure  
ports:  
- 18080:80  

proxy:  
image: nginx:1.13.6-alpine  
container_name: nginx_proxy  
ports:  
- "8443:443"  
volumes:  
- ./conf/:/etc/nginx/conf.d/:ro  
- ./conf/tls/:/etc/nginx/tls/:ro  
depends_on:  
- conjur  
- openssl  
restart: on-failure  

client:  
image: cyberark/conjur-cli:5  
container_name: conjur_client  
depends_on: [ proxy ]  
entrypoint: sleep  
command: infinity  
volumes:  
- ./conf/policy:/policy 

我可以确认数据正在写入本地主机卷/share/Containe/doker/concur。我通过"登录"进入docker容器进行测试;docker exec-it bash;并转到/var/lib/postgresql/data目录,然后触摸test.txt文件。然后我确认本地主机卷上有test.txt文件。

但是,当我登录到pgadmin web界面,查看我在前面步骤中创建的数据库时,它们已经不存在了,而且管理员密码也被设置为默认值,而不是我更改的密码。

有什么想法吗?

谢谢。

如果你想让数据库数据持久化,你需要在Docker中使用一个卷。这将要求您引用docker-compose.yml文件中的卷,并在database定义中使用它:

version: '3'  
services:    
openssl:  
image: cyberark/conjur  
container_name: openssl  
entrypoint:  
- openssl  
- req  
- -newkey  
- rsa:2048  
- -days  
- "365"  
- -nodes  
- -x509  
- -config  
- /tmp/conf/tls.conf  
- -extensions  
- v3_ca  
- -keyout  
- /tmp/conf/nginx.key  
- -out  
- /tmp/conf/nginx.crt  
volumes:  
- ./conf/tls/:/tmp/conf  
bot_app:  
image: cfmanteiga/alpine-bash-curl-jq  
privileged: true  
container_name: bot_app  
command: tail -F anything  
volumes:  
- ./program.sh:/tmp/program.sh  
restart: on-failure  

database:  
image: postgres:10.16  
container_name: postgres_database  
environment:  
POSTGRES_HOST_AUTH_METHOD: trust  
ports:  
- 8432:5432  
volumes:  
- database:/var/lib/postgresql/data  

pgadmin:  
#    [https]://www.pgadmin.org/docs/pgadmin4/latest/container_deployment.html  
image: dpage/pgadmin4  
environment:  
PGADMIN_DEFAULT_EMAIL: user@domain.com  
PGADMIN_DEFAULT_PASSWORD: SuperSecret
links:
- database
depends_on:
- database
ports:  
- 18081:80  

conjur:  
image: cyberark/conjur  
container_name: conjur_server  
command: server  
environment:  
DATABASE_URL: postgres://postgres@database/postgres  
CONJUR_DATA_KEY:  
CONJUR_AUTHENTICATORS:  
depends_on:  
- database  
restart: on-failure  
ports:  
- 18080:80  

proxy:  
image: nginx:1.13.6-alpine  
container_name: nginx_proxy  
ports:  
- "8443:443"  
volumes:  
- ./conf/:/etc/nginx/conf.d/:ro  
- ./conf/tls/:/etc/nginx/tls/:ro  
depends_on:  
- conjur  
- openssl  
restart: on-failure  

client:  
image: cyberark/conjur-cli:5  
container_name: conjur_client  
depends_on: [ proxy ]  
entrypoint: sleep  
command: infinity  
volumes:  
- ./conf/policy:/policy
volumes:
database:

您的数据库似乎没有任何问题。您与数据库的连接似乎没有正确完成。你能试试这个吗?

pgadmin:  
image: dpage/pgadmin4  
environment:  
PGADMIN_DEFAULT_EMAIL: user@domain.com  
PGADMIN_DEFAULT_PASSWORD: SuperSecret  
PGADMIN_CONFIG_SERVER_MODE: 'False'
links:
- database
volumes:
- pgadmin:/root/.pgadmin
ports:  
- 18081:80  

最新更新