Verwenden Sie docker-compose
und mehrere Dockerfile
in separaten Verzeichnissen
Benennen Sie Ihr nichtDockerfile
in Dockerfile.db
oder 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 Dockerfile
pro Verzeichnis haben, die etwas darstellen, das Sie erstellen möchten.
Ich möchte einen docker
Ordner 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 Dockerfile
in einem Verzeichnis wie docker/web/Dockerfile
alles, was Sie brauchen , ist die Build setzen context
in Ihrem docker-compose.yml
wie 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 .