#postgresql #docker #cyber-ark
Вопрос:
Я пытаюсь настроить решение cyberark conjur, используя контейнеры docker и локальный том для хранения постоянных данных. Я следовал инструкциям по следующей ссылке: 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
Я могу подтвердить, что данные записываются на локальный том хоста /общий ресурс/Контейнер/docker/conjur. Я протестировал, войдя в контейнер docker через «docker exec-it bash», зайдя в каталог /var/lib/postgresql/data и коснувшись test.txt файл. Затем я подтвердил, что на локальном хост-томе, который test.txt файл там.
Но когда я захожу в веб-интерфейс pgadmin и смотрю на базы данных, которые я создал на предыдущих шагах, они больше не существуют, а также пароль администратора был установлен по умолчанию вместо того, на что я его изменил.
Есть какие-нибудь мысли?
Спасибо.
Ответ №1:
Похоже, с вашей базой данных нет никаких проблем. Похоже, ваше подключение к базе данных выполнено неправильно. Не могли бы вы попробовать это ?
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
Комментарии:
1. Я попробовал это, и, похоже, это заставило контейнер для заклинаний остановиться. Попытался понять, почему используются журналы docker, и все, что в них написано : 2021-05-24T20:15:56.869858903 Z запись нового закрытого ключа в «/tmp/conf/nginx.ключ»
2. Таким образом, ваша проблема, похоже, исходит из Nginx.conf. Не могли бы вы создать пример только с вашей базой данных и Pgadmin, чтобы проверить, все ли идет хорошо.
3. Если все пойдет хорошо, вы можете закрыть эту проблему и открыть другую на основе nginx.conf
Ответ №2:
Если вы хотите, чтобы данные базы данных сохранялись, вам необходимо использовать том в 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: