Вот упрощенная версия моего docker-compose.yml
(это объем в buggy-service
, который не ведет себя так, как я ожидаю):
version: '3.4'
services:
local-db:
image: postgres:9.6
environment:
- DB_NAME=${DB_NAME}
# other env vars (not important)
ports:
- 5432:5432
volumes:
- ~/.docker-volumes/${DB_NAME}/postgresql/data:/var/lib/postgresql/data
- postgresql:/docker-entrypoint-initdb.d
buggy-service:
build:
context: .
dockerfile: Dockerfile.test
target: buggy-image
args:
# bunch of args (not important)
volumes:
- /Users/me/temp:/temp
volumes:
postgresql:
driver_opts:
type: none
device: /Users/me/postgresql
o: bind
Если я сделаю docker-compose -f docker-compose.yml up -d local-db
, контейнер для него запустится автоматически, и я обнаружу, что /Users/me/postgresql
на хост-компьютере (Mac OSX) правильно связывается с /docker-entrypoint-initdb.d
с синхронизацией содержимого.
Однако, если я сделаю docker-compose -f docker-compose.yml up --build -d buggy-service
, контейнер не запустится автоматически.
Вопрос: Как заставить buggy-service
вести себя как local-db
запускать автоматически с установленным томом?
Вот урезанная версия Dockerfile.test
, на которую ссылается buggy-service
:
FROM microsoft/dotnet:2.1-sdk-alpine AS buggy-image
# Bunch of ARG definitions (not important)
VOLUME /temp
# other stuff (not important)
ENTRYPOINT ["/bin/bash"]
# Other FROMs
Редактировать 1
Немного больше информации о том, чего я пытаюсь достичь ...
Багги-контейнер I 'я пытаюсь заставить работать работает .Net Core в качестве базового образа.Его цель - запустить dotnet test
и сгенерировать отчеты о покрытии, которые затем могут быть использованы на хосте, который может быть локальным разработчиком или сервером сборки (в данном случае, конвейерами BitBucket).