Я хотел бы иметь возможность развернуть мое приложение в среде pre-prod
для тестирования интеграции с использованием тома Docker, который будет предоставлять экземпляр PostgreSQL.Я использую Scala v2.12.8 и Play v2.7.
Глядя на параметры среды собственного упаковщика SBT, представляется возможным определить dockerExposedVolumes
для подключения БД.
Использование обычного файла компоновки Docker Iбудет делать что-то вроде этого:
version: "3"
services:
db:
image: postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgress
- POSTGRES_DB=postgres
ports:
- "5433:5432"
volumes:
- pgdata:/var/lib/postgresql/data
networks:
- suruse
volumes:
pgdata:
Эта конфигурация была взята из этого SO ответа .
Я попытался найти примеры конфигурации, но пока не нашел ничего полезного.Теперь я задаюсь вопросом , как мне определить новый том докера, а затем точно представить его для образа Docker, созданного SBT?
РАБОЧЕЕ РЕШЕНИЕ
Финальная версия.Я полностью протестировал его, и он работает, выставляя базу данных на TCP-порт 5433.
# https://docs.docker.com/samples/library/postgres/
version: "3"
services:
app-pgsql:
image: postgres:9.6
restart: always
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=yourPasswordHere
- POSTGRES_DB=yourDatabaseNameHere
- POSTGRES_INITDB_ARGS="--encoding=UTF8"
ports:
- "5433:5432"
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
driver: local
Запустите docker compose, используя sbt dockerComposeUp -useStaticPorts
, а затем проверьте, действительно ли контейнеры были выставлены, используя docker ps -a
.Также проверьте файлы журналов с помощью команды, предоставленной dockerComposeUp
или dockerComposeInstances
.