Gunakan docker-composedan multipel Dockerfiledalam direktori yang terpisah
Jangan ganti namaDockerfile menjadi Dockerfile.dbatau Dockerfile.web, itu mungkin tidak didukung oleh IDE Anda dan Anda akan kehilangan penyorotan sintaksis.
Seperti yang dikatakan Kingsley Uchnor , Anda dapat memiliki banyakDockerfile , satu direktori, yang mewakili sesuatu yang ingin Anda bangun.
Saya suka memiliki dockerfolder yang menampung setiap aplikasi dan konfigurasinya. Berikut ini adalah contoh hierarki folder proyek untuk aplikasi web yang memiliki database.
docker-compose.yml
docker
├── web
│ └── Dockerfile
└── db
└── Dockerfile
docker-compose.yml contoh:
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 contoh penggunaan baris perintah:
# 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
Jika Anda memerlukan file dari folder sebelumnya ketika membangun Dockerfile Anda
Anda masih dapat menggunakan solusi di atas dan menempatkan Anda Dockerfiledi direktori seperti docker/web/Dockerfile, yang Anda butuhkan hanyalah mengatur build contextdi docker-compose.ymlseperti ini:
version: '3'
services:
web:
build:
context: .
dockerfile: ./docker/web/Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
Dengan cara ini, Anda akan dapat memiliki hal-hal seperti ini:
config-on-root.ini
docker-compose.yml
docker
└── web
├── Dockerfile
└── some-other-config.ini
dan ./docker/web/Dockerfileseperti ini:
FROM alpine:latest
COPY config-on-root.ini /
COPY docker/web/some-other-config.ini /
Berikut adalah beberapa perintah cepat dari tldr docker-compose . Pastikan Anda merujuk ke dokumentasi resmi untuk detail lebih lanjut.