Я пытаюсь создать собственное изображение докера, чтобы использовать его в качестве образа сборки с помощью AWS CodeBuild. Он отлично работает, если я просто делаю docker build
против Dockerfile с настроенной средой. Но теперь мне нужно добавить экземпляр postgres для запуска тестов. Поэтому я подумал, что использование docker-compose
поможет. Однако я не могу понять, как заставить его работать. Вроде как статическая часть композиции (изображение из Dockerfile) просто сразу останавливается при попытке docker-compose up
, так как точки входа нет. На данный момент я могу подключиться к экземпляру БД, запустив docker-compose run db psql -h db -U testdb -d testdb
. Но когда я создаю и передаю его сценарию, предоставленному AWS, он работает нормально, пока мои тесты не попытаются достичь сервера БД. Здесь он терпит неудачу с тайм-аутом, как если бы не было экземпляра БД.
Конфиги выглядят так:
version: '3.7'
services:
api-build:
tty: true
build: ./api_build
image: api-build
depends_on:
- db
db:
image: postgres:10-alpine
restart: always
environment:
POSTGRES_USER: testdb
POSTGRES_PASSWORD: testdb
И Dockerfile под ./api_build
:
FROM alpine:3.8
FROM ruby:2.3-alpine as rb
RUN apk update && apk upgrade && \
echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \
echo @edge http://nl.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories
RUN apk add --no-cache \
alpine-sdk \
tzdata \
libxml2-dev \
libxslt-dev \
libpq \
postgresql-dev \
elixir \
erlang
ОБНОВЛЕНИЕ: я только что понял, что docker-compose build
просто создает части композиции, если это необходимо (например, файл Docker обновлен), значит ли это, что нет способа создать образ с помощью компоновки докеров? Или я делаю что-то очень неправильно?