我正在尝试使用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