Я пытаюсь настроить тест circleCI, я создал базу данных в circleCI и у меня есть док-контейнер, который должен подключиться к базе данных, но не может. Внутри моего docker-контейнера находится скрипт, который, прежде чем что-либо делать, запускает pg_isready, он не может подключиться к базе данных. Вот мое создание круга работы
postgres_tests:
docker:
- image: circleci/python:3.7
- image: circleci/postgres:9.6.2-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_DB: my_test
steps:
- setup_remote_docker:
docker_layer_caching: true
- attach_workspace:
at: /tmp/workspace
- run:
name: Install awscli docker-squash
working_directory: /
command: sudo pip3 install awscli docker-squash
- run: eval `aws ecr get-login --no-include-email --region eu-west-1`
- checkout
- run: echo 'export PATH=/usr/lib/postgresql/9.6/bin/:$PATH' >> $BASH_ENV
- run: sudo apt-get update && sudo apt-get install -y postgresql-client
- run: psql -h localhost -U postgres --command "ALTER USER postgres WITH PASSWORD 'password';"
- run:
name: run_pg_tests
working_directory: /tmp/workspace
command: |
/tmp/workspace/sql/t/run_tests.sh
run_tests.sh - это скрипт, который извлекает мой образ докера из репозитория компании, а затем запускает докер для этого образа.
Я читал, что у других людей есть проблемы, когда база данных не готова, поэтому, чтобы проверить это, я добавил pg_isready перед запуском докера
Так что мой скрипт выглядит так
DB_HOST=`psql -X -A -h localhost -U postgres -p 5432 -t -c "select inet_server_addr()"`
DB_PORT=5432
DB_NAME=my_test
DB_USER=postgres
DB_PASSWORD=password
pg_isready -h "${DB_HOST}" -p "${DB_PORT}"
#restore database from supplied image
docker run \
-e SAPIENTIA_DB_HOST=$DB_HOST \
-e SAPIENTIA_DB_PORT=$DB_PORT \
-e SAPIENTIA_DB_NAME=$DB_NAME \
-e SAPIENTIA_DB_PASSWORD=$DB_PASSWORD \
-e SAPIENTIA_DB_USER=$DB_USER \
$EMPTY_DB_FULL_PATH \
path_to_file/file
Я также попытался установить переменную DB_HOST непосредственно в 'localhost', результат точно такой же
Вот что я получил в результате:
127.0.0.1:5432 - accepting connections
127.0.0.1:5432 - no response
Я также попытался повторнозапустить тест с ssh и подключиться. Тот же результат, я могу подключиться к базе данных, но затем я запускаю docker exec и пытаюсь подключиться изнутри контейнера докера, который он не может подключить.
Я здесь довольно тупой, поэтому любая помощь будет полезна.