Здравствуйте! Я не могу подключиться к службе докерских контейнеров postgresql для запуска миграций из моего приложения dockerized rails.Я запускаю сервисы из docker-compose, ошибка такова:
FATAL: the database system is starting up
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "username"=>"runner", "password"=>"test", "host"=>"postgres", "database"=>"myapp_test"}
rails aborted!
docker-compose.develop-ci.yml
version: '3'
services:
postgres:
image: postgres:10.5
volumes:
- myapp-postgres:/var/lib/postgresql/data
environment:
POSTGRES_DB: myapp_test
POSTGRES_USER: runner
POSTGRES_PASSWORD: "test"
ports:
- '5432:5432'
redis:
image: redis:4.0.11
volumes:
- myapp-redis:/var/lib/redis/data
web:
command: bundle exec rails server -p 3000 -b '0.0.0.0'
ports:
- '3000:3000'
depends_on:
- postgres
- redis
environment:
POSTGRES_DB: myapp_test
POSTGRES_USER: runner
POSTGRES_PASSWORD: "test"
итак, я подумал, что postgres нужно время для запуска перед запуском миграций, я добавил проверку работоспособности, чтобы составить так
postgres:
image: postgres:10.5
volumes:
- myapp-postgres:/var/lib/postgresql/data
environment:
POSTGRES_DB: myapp_test
POSTGRES_USER: runner
POSTGRES_PASSWORD: "test"
ports:
- '5432:5432'
healthcheck:
test: ["CMD-SHELL", "pg_isready -U runner"]
interval: 10s
timeout: 5s
retries: 5
, но возникает та же ошибка.Что может быть?
ПРИМЕЧАНИЕ. Я запускаю этот gitlab-ci runner, включаю свой этап gitlab-ci
test_development:
stage: test
environment: test
script:
- docker build --rm --tag $CONTAINER_TEST_IMAGE --target Development .
- docker image ls
- docker-compose -f docker-compose.develop-ci.yml run web rails db:create db:migrate RAILS_ENV=test
- docker-compose -f docker-compose.develop-ci.yml run web rails test RAILS_ENV=test
except:
- master
ПРИМЕЧАНИЕ 2. Эта конфигурация работала и внезапно перестала работать без изменений в этих файлах.был сделан, и если вы спросите, мой database.yml таков:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= ENV['POSTGRES_USER'] %>
password: <%= ENV['POSTGRES_PASSWORD'] %>
host: postgres
development:
<<: *default
database: myapp_development
test:
<<: *default
database: myapp_test
production:
<<: *default
database: myapp_production
username: <%= ENV['POSTGRES_USER_PRODUCTION'] %>
password: <%= ENV['POSTGRES_PASSWORD_PRODUCTION'] %>
РЕДАКТИРОВАТЬ: выполнение заданий конвейера gitlab-ci в свободном уровне AWS выдает ошибку, поэтому я включилдругой бегун на моей локальной машине и запускающий тот же код, и теперь он работает просто отлично, я чувствую, что это как-то связано с экземплярами amazon, может быть, проблема с оперативной памятью или процессором ??Я попытался перезапустить gitlab runner на AWS и на экземпляре, но он выдает ту же ошибку.
мой локальный config.toml:
concurrent = 4
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "myapp local runner"
url = "https://gitlab.com/"
token = "verysecret"
executor = "docker"
[runners.docker]
tls_verify = false
image = "docker:stable"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
AWS EC2 config.toml, на котором запущен экземпляр:
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "myapp AWS EC2 runner"
url = "https://gitlab.com/"
token = "verysecret2"
executor = "docker"
[runners.docker]
tls_verify = false
image = "docker:stable"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]