Как подключить том PostgreSQL к образу Docker, созданному с помощью собственного упаковщика SBT? - PullRequest
1 голос
/ 02 июля 2019

Я хотел бы иметь возможность развернуть мое приложение в среде 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.

1 Ответ

1 голос
/ 02 июля 2019

Существует плагин sbt , который поможет вам достичь этого:

SBT-докер-Compose

С этим вы можете добавить свою базу данных в файл компоновки Docker и запускать все в sbt.

Это стандарт Docker. Вот объяснение, как это сделать для Postgres:

[run_postgresql_docker_compose][2]

docker-compose.yml из этого примера:

version: '3'
services:
mydb:
image: postgres
volumes:
- db-data:/var/lib/postgresql/data
ports:
         - 5432:5432/tc

volumes:
db-data:
driver: local

Поскольку это стандартный способ Docker, вы найдете больше примеров.

...