Użyj docker-composei wielu Dockerfilew osobnych katalogach
Nie zmieniaj nazwyDockerfile na Dockerfile.dblub 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ć dockerfolder, 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 Dockerfilew katalogu, takim jak docker/web/Dockerfilewszystko, czego potrzebujesz, to ustawić kompilację contextw docker-compose.ymlnastę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/Dockerfilepodobne:
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ą .