Я добавляю фиктивную настройку вместе с содержимым файлов:
tree
.
├── docker-compose.yml
├── mariadb
│ └── Dockerfile
└── web-app
└── Dockerfile
------------------------
cat docker-compose.yml
version: "3"
services:
webapp:
build:
context: ./web-app
dockerfile: Dockerfile
mariadb:
build:
context: ./mariadb
dockerfile: Dockerfile
environment:
- MYSQL_ROOT_PASSWORD=supersecret
------------
cat mariadb/Dockerfile
FROM mariadb
RUN echo "hello from mariadb"
------------
cat web-app/Dockerfile
FROM nginx
RUN echo "Hello"
RUN echo "from web-app"
# ^^ that's an example for a change that you want to perform(adding a new module) ^^
Предполагая, что вы только что выполнили изменение в веб-приложении / Dockerfile, у вас есть несколько вариантов:
Вариант A:
Вы перестраиваете одно определенное c изображение, при этом текущие контейнеры не затрагиваются:
docker-compose build webapp
Building webapp
Step 1/3 : FROM nginx
---> 2622e6cca7eb
Step 2/3 : RUN echo "Hello"
---> Using cache
---> ad39a2920d75
Step 3/3 : RUN echo "from web-app"
---> Running in ea62a9e81110
from web-app
Removing intermediate container ea62a9e81110
---> 9fc79785a4c4
Когда вам удобно с созданным вами образом повторно разверните контейнеры, в которых произошли изменения образа (обратите внимание, что если вы запустите docker -compose up, только веб-приложение будет повторно развернуто):
docker-compose up -d
stack-example_mariadb_1 is up-to-date
Recreating stack-example_webapp_1 ... done
Вариант B :
Если вы уверены в изменениях, которые вы внесли в Dockerfile, go для однострочника с опцией --build
:
docker-compose up -d --build
Building webapp
Step 1/4 : FROM nginx
---> 2622e6cca7eb
Step 2/4 : RUN echo "Hello"
---> Using cache
---> ad39a2920d75
Step 3/4 : RUN echo "from web-appi"
---> Running in 8cbd41c34d35
from web-appi
Removing intermediate container 8cbd41c34d35
---> ed7bc1950d4c
Step 4/4 : RUN echo "change 2"
---> Running in f52be965609f
change 2
Removing intermediate container f52be965609f
---> da600ed3f0ed
Successfully built da600ed3f0ed
Successfully tagged stack-example_webapp:latest
Building mariadb
Step 1/2 : FROM mariadb
---> 8075b7694a2d
Step 2/2 : RUN echo "hello from mariadb"
---> Using cache
---> 89f75af407fe
Successfully built 89f75af407fe
Successfully tagged stack-example_mariadb:latest
Recreating stack-example_webapp_1 ...
Recreating stack-example_webapp_1 ... done