Verwenden Sie docker-composeund mehrere Dockerfilein separaten Verzeichnissen
Benennen Sie Ihr nichtDockerfile in Dockerfile.dboder um Dockerfile.web, es wird möglicherweise nicht von Ihrer IDE unterstützt und Sie verlieren die Syntaxhervorhebung.
Wie Kingsley Uchnor sagte , können Sie mehrere Dockerfilepro Verzeichnis haben, die etwas darstellen, das Sie erstellen möchten.
Ich möchte einen dockerOrdner haben, der jede Anwendung und ihre Konfiguration enthält. Hier ist ein Beispiel für eine Projektordnerhierarchie für eine Webanwendung mit einer Datenbank.
docker-compose.yml
docker
├── web
│ └── Dockerfile
└── db
└── Dockerfile
docker-compose.yml Beispiel:
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 Beispiel für die Verwendung der Befehlszeile:
# 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
Falls Sie beim Erstellen Ihrer Docker-Datei Dateien aus früheren Ordnern benötigen
Sie können immer noch die obige Lösung verwenden und platzieren Sie Ihre Dockerfilein einem Verzeichnis wie docker/web/Dockerfilealles, was Sie brauchen , ist die Build setzen contextin Ihrem docker-compose.ymlwie folgt aus :
version: '3'
services:
web:
build:
context: .
dockerfile: ./docker/web/Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
Auf diese Weise können Sie Folgendes tun:
config-on-root.ini
docker-compose.yml
docker
└── web
├── Dockerfile
└── some-other-config.ini
und so ./docker/web/Dockerfileähnlich:
FROM alpine:latest
COPY config-on-root.ini /
COPY docker/web/some-other-config.ini /
Hier sind einige schnelle Befehle von tldr docker-compose . Weitere Informationen finden Sie in der offiziellen Dokumentation .