Użyj docker-compose
i wielu Dockerfile
w osobnych katalogach
Nie zmieniaj nazwyDockerfile
na Dockerfile.db
lub Dockerfile.web
, może to nie być obsługiwane przez twoje IDE i stracisz podświetlanie składni.
Jak powiedział Kingsley Uchnor , możesz mieć wiele Dockerfile
, jeden na katalog, które reprezentują coś, co chcesz zbudować.
Lubię mieć docker
folder, w którym przechowywane są wszystkie aplikacje i ich konfiguracja. Oto przykładowa hierarchia folderów projektu dla aplikacji internetowej, która ma bazę danych.
docker-compose.yml
docker
├── web
│ └── Dockerfile
└── db
└── Dockerfile
docker-compose.yml
przykład:
version: '3'
services:
web:
# will build ./docker/web/Dockerfile
build: ./docker/web
ports:
- "5000:5000"
volumes:
- .:/code
db:
# will build ./docker/db/Dockerfile
build: ./docker/db
ports:
- "3306:3306"
redis:
# will use docker hub's redis prebuilt image from here:
# https://hub.docker.com/_/redis/
image: "redis:alpine"
docker-compose
przykład użycia wiersza poleceń:
# The following command will create and start all containers in the background
# using docker-compose.yml from current directory
docker-compose up -d
# get help
docker-compose --help
Jeśli potrzebujesz plików z poprzednich folderów podczas tworzenia pliku Docker
Nadal możesz użyć powyższego rozwiązania i umieścić go Dockerfile
w katalogu, takim jak docker/web/Dockerfile
wszystko, czego potrzebujesz, to ustawić kompilację context
w docker-compose.yml
następujący sposób:
version: '3'
services:
web:
build:
context: .
dockerfile: ./docker/web/Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
W ten sposób będziesz mieć takie rzeczy:
config-on-root.ini
docker-compose.yml
docker
└── web
├── Dockerfile
└── some-other-config.ini
i ./docker/web/Dockerfile
podobne:
FROM alpine:latest
COPY config-on-root.ini /
COPY docker/web/some-other-config.ini /
Oto kilka szybkich poleceń z tldr docker-compose . Aby uzyskać więcej informacji , zapoznaj się z oficjalną dokumentacją .