Пакетная обработка Docker Compose
Compose работает во всех средах: производстве, промежуточном этапе, разработке, тестировании и рабочих процессах CI. Также есть команды для управления всем жизненным циклом приложения:
docker-compose.yml
чтобы они могли работать вместе в изолированной средеdocker compose up
,Docker compose команда для запуска и выполнения всего приложения. Также docker-compose upЗапускайте автономно с помощью Compose (
docker-composeдвоичный)
Существует три версии, рекомендуется использовать версию 3.
Сервис представляет собой контейнер, который может быть создан из образа dockerhub или образа, созданного из локального файла Dockerfile.
Запуск службы аналогичен запуску докера. Мы можем указать для него сеть и том, поэтому мы можем указать ссылки на сеть и том для службы.
services:
db:
image: postgres:9.4
volumes:
-"db-data:/var/lib/postgresql/data'
networks:
- back-tier
Эквивалентно
docker run -d
--networks back-tier
-v db-data:/var/lib/postgresql/data
postgres:9.4
services:
worker:
# Не из dockerhub тянуть, но из местных build из. То есть указать dockerfile расположение
build: ./worker
# worker Какие контейнеры связаны?
links:
- db
- redis
networks:
- back-tier
Используется для соединения контейнеров и реализации связи между контейнерами.
Мы все создадим новый докер-мост через compose. Если все контейнеры подключены к мосту, ссылки вообще не нужны. Ссылки необходимы для трансляции DNS-имени только при подключении к Docker-0 по умолчанию.
Таким образом, если файл Docker Compose определяет сеть и добавляет в сеть все контейнеры, эти контейнеры можно автоматически обнаружить и получить к ним доступ напрямую через DNS. На этом этапе тег ссылок не имеет большого эффекта. Лишь в редких случаях, когда контейнер подключен к сети по умолчанию и ему необходимо взаимодействовать с другими контейнерами, ссылки необходимо использовать в качестве альтернативы ручной настройке. Однако метод ссылок имеет множество ограничений по сравнению с сетью Docker, поэтому Docker всегда рекомендовал использовать собственную сеть для подключения контейнеров вместо ссылок. Так что в целом это утверждение верно.
Сеть, созданная для нас compose, обеспечивает автоматическое обнаружение и доступ между контейнерами. В большинстве случаев ссылки бесполезны.
Однако метод ссылок имеет следующие недостатки:
Таким образом, недостатки и ограничения ссылок в большинстве случаев делают их не идеальным решением для межконтейнерной связи. Docker рекомендует следующие альтернативы:
Таким образом, в целом использование ссылок было заменено более продвинутыми механизмами, такими как сетевые инструменты Docker и инструменты обнаружения сервисов. В новых проектах отдавайте приоритет использованию собственной сети Docker или сторонних инструментов обнаружения сервисов и балансировки нагрузки для обеспечения взаимодействия между контейнерами. Ссылки теперь работают только для очень простых контейнерных приложений или для совместимости со старыми файлами Docker Compose. Поэтому в большинстве случаев тег «Ссылки» бесполезен.
services:
db:
image: postgres:9.4
volumes:
db-data:
networks:
- back-tier
docker volume create db-data
services:
db:
image: postgres:9.4
volumes:
db-data:
networks:
back-tier:
driver: bridge
front-tier:
driver: bridge
docker network create -d bridge back-tier
version: '3'
services:
wordpress:
image: wordpress
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
networks:
- my-bridge
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
volumes:
- mysql-data:/var/lib/mysql
networks:
- my-bridge
volumes:
mysql-data:
networks:
my-bridge:
driver: bridge
Этот файл Docker Compose определяет приложение WordPress, состоящее из двух контейнеров:
Этот файл Compose реализует совместное развертывание WordPress и MySQL. Оба подключены к одной сети. WordPress подключается к MySQL через переменные среды и использует тома данных для обеспечения постоянства файлов базы данных.
При первом запуске будет:
Будущие запуски будут лишь перезапускать контейнер, сеть и тома останутся без изменений.
[root@icv-monitor-platform-dev ~]# yum install -y docker-compose
Loaded plugins: langpacks, versionlock
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
yum_bcm | 2.5 kB 00:00:00
epel/x86_64/updateinfo FAILED
http://mirrors.agilecloud.com/epel/7/x86_64/repodata/e06414b68d54c610e042619ea9ed5efb25bb5a6d31e42dfdd38699029423209b-updateinfo.xml.bz2: [Errno 14] HTTP Error 404 - Not FoundTA
Trying other mirror.
To address this issue please refer to the below knowledge base article
https://access.redhat.com/articles/1320623
If above article doesn't help to resolve this issue please create a bug on https://bugs.centos.org/
epel/x86_64/primary_db FAILED
http://mirrors.agilecloud.com/epel/7/x86_64/repodata/a80f23383e955fc3c9c1874dcf2619d8abff2bd6c8dd2062923cdf91d1dcb464-primary.sqlite.bz2: [Errno 14] HTTP Error 404 - Not FoundTA
Trying other mirror.
(1/3): docker-ce-stable/7/x86_64/primary_db | 106 kB 00:00:00
Excluding 1 update due to versionlock (use "yum versionlock status" to show it)
Resolving Dependencies
--> Running transaction check
---> Package docker-compose.noarch 0:1.18.0-4.el7 will be installed
...
--> Finished Dependency Resolution
Dependencies Resolved
==================================================================================================================================================================================
Package Arch Version Repository Size
==================================================================================================================================================================================
Installing:
docker-compose noarch 1.18.0-4.el7 epel 222 k
Installing for dependencies:
... epel 59 k
Transaction Summary
==================================================================================================================================================================================
Install 1 Package (+15 Dependent packages)
Total download size: 1.4 M
Installed size: 7.5 M
Downloading packages:
...
(16/16): python36-websocket-client-0.47.0-2.el7.noarch.rpm | 59 kB 00:00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 8.8 MB/s | 1.4 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
...
Verifying : python36-websocket-client-0.47.0-2.el7.noarch 16/16
Installed:
docker-compose.noarch 0:1.18.0-4.el7
Dependency Installed:
python36-PyYAML.x86_64 0:3.13-1.el7 python36-cached_property.noarch 0:1.5.1-2.el7 python36-chardet.noarch 0:3.0.4-1.el7 python36-docker.noarch 0:2.6.1-3.el7
python36-docker-pycreds.noarch 0:0.2.1-2.el7 python36-dockerpty.noarch 0:0.4.1-18.el7 python36-docopt.noarch 0:0.6.2-8.el7 python36-idna.noarch 0:2.7-2.el7
python36-jsonschema.noarch 0:2.5.1-4.el7 python36-pysocks.noarch 0:1.6.8-7.el7 python36-requests.noarch 0:2.14.2-2.el7 python36-six.noarch 0:1.14.0-2.el7
python36-texttable.noarch 0:1.6.2-1.el7 python36-urllib3.noarch 0:1.25.6-1.el7 python36-websocket-client.noarch 0:0.47.0-2.el7
Complete!
[root@icv-monitor-platform-dev ~]# docker compose version
Docker Compose version v2.17.3
[root@icv-monitor-platform-dev docker]# docker-compose up
Recreating docker_wordpress_1 ...
Recreating docker_wordpress_1 ... done
Attaching to docker_mysql_1, docker_wordpress_1
wordpress_1 | WordPress not found in /var/www/html - copying now...
mysql_1 | 2023-05-06 09:11:25+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
mysql_1 | 2023-05-06 09:11:25+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
mysql_1 | 2023-05-06 09:11:25+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
mysql_1 | 2023-05-06 09:11:25+00:00 [Note] [Entrypoint]: Initializing database files
mysql_1 | 2023-05-06T09:11:25.184821Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.27) initializing of server in progress as process 42
mysql_1 | 2023-05-06T09:11:25.194319Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
mysql_1 | 2023-05-06T09:11:26.099933Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
mysql_1 | 2023-05-06T09:11:27.476271Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
mysql_1 | 2023-05-06T09:11:27.476300Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
mysql_1 | 2023-05-06T09:11:27.627812Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
mysql_1 | 2023-05-06 09:11:30+00:00 [Note] [Entrypoint]: Database files initialized
mysql_1 | 2023-05-06 09:11:30+00:00 [Note] [Entrypoint]: Starting temporary server
mysql_1 | 2023-05-06T09:11:31.071379Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.27) starting as process 91
mysql_1 | 2023-05-06T09:11:31.091286Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
mysql_1 | 2023-05-06T09:11:31.350282Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
mysql_1 | 2023-05-06T09:11:31.544377Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
mysql_1 | 2023-05-06T09:11:31.544407Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
mysql_1 | 2023-05-06T09:11:31.545449Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
mysql_1 | 2023-05-06T09:11:31.545492Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
mysql_1 | 2023-05-06T09:11:31.547265Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
mysql_1 | 2023-05-06T09:11:31.564869Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock
mysql_1 | 2023-05-06T09:11:31.565054Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.27' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server - GPL.
mysql_1 | 2023-05-06 09:11:31+00:00 [Note] [Entrypoint]: Temporary server started.
mysql_1 | Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
mysql_1 | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
mysql_1 | Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
mysql_1 | Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
mysql_1 | 2023-05-06 09:11:33+00:00 [Note] [Entrypoint]: Creating database wordpress
mysql_1 |
mysql_1 | 2023-05-06 09:11:33+00:00 [Note] [Entrypoint]: Stopping temporary server
mysql_1 | 2023-05-06T09:11:33.250603Z 11 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.27).
mysql_1 | 2023-05-06T09:11:34.554923Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.27) MySQL Community Server - GPL.
mysql_1 | 2023-05-06 09:11:35+00:00 [Note] [Entrypoint]: Temporary server stopped
mysql_1 |
mysql_1 | 2023-05-06 09:11:35+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
mysql_1 |
mysql_1 | 2023-05-06T09:11:35.539635Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.27) starting as process 1
mysql_1 | 2023-05-06T09:11:35.551731Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
mysql_1 | 2023-05-06T09:11:35.804326Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
mysql_1 | 2023-05-06T09:11:36.004188Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
mysql_1 | 2023-05-06T09:11:36.004221Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
mysql_1 | 2023-05-06T09:11:36.005212Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
mysql_1 | 2023-05-06T09:11:36.005253Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
mysql_1 | 2023-05-06T09:11:36.008635Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
mysql_1 | 2023-05-06T09:11:36.026993Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
mysql_1 | 2023-05-06T09:11:36.027899Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.27' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
wordpress_1 | Complete! WordPress has been successfully copied to /var/www/html
wordpress_1 | No 'wp-config.php' found in /var/www/html, but 'WORDPRESS_...' variables supplied; copying 'wp-config-docker.php' (WORDPRESS_DB_HOST WORDPRESS_DB_PASSWORD)
wordpress_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.2. Set the 'ServerName' directive globally to suppress this message
wordpress_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.2. Set the 'ServerName' directive globally to suppress this message
wordpress_1 | [Sat May 06 09:52:36.197040 2023] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.56 (Debian) PHP/8.0.28 configured -- resuming normal operations
wordpress_1 | [Sat May 06 09:52:36.197088 2023] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
[root@icv-monitor-platform-dev ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
08538a461949 wordpress "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:8083->80/tcp, :::8083->80/tcp docker_wordpress_1
fceb9e329624 mysql "docker-entrypoint.s…" 43 minutes ago Up 42 minutes 3306/tcp, 33060/tcp docker_mysql_1
28888809ef74 redis:myredis-1.0 "docker-entrypoint.s…" 8 days ago Up 8 days 0.0.0.0:32768->6379/tcp, :::32768->6379/tcp redisABC
[root@icv-monitor-platform-dev docker]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------
docker_mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
docker_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8083->80/tcp,:::8083->80/tcp
[root@icv-monitor-platform-dev docker]#
docker-compose stop
и docker-compose down
используются, чтобы остановить Docker Compose Контейнеры на подходе.
останавливатьсятолькосуществоватьбегать的контейнер,но нетудалитьконтейнерисеть:
[root@icv-monitor-platform-dev docker]# docker-compose stop
Stopping docker_wordpress_1 ... done
Stopping docker_mysql_1 ... done
[root@icv-monitor-platform-dev docker]#
[root@icv-monitor-platform-dev docker]# docker-compose ps
Name Command State Ports
--------------------------------------------------------------------
docker_mysql_1 docker-entrypoint.sh mysqld Exit 0
docker_wordpress_1 docker-entrypoint.sh apach ... Exit 0
[root@icv-monitor-platform-dev docker]#
Контейнер находится в остановленном состоянии, и доступ к нему можно получить через start
Команда для перезапуска:
[root@icv-monitor-platform-dev docker]# docker-compose start
Starting wordpress ... done
Starting mysql ... done
[root@icv-monitor-platform-dev docker]#
останавливатьсяиудалитьконтейнер、сетьиобъем данных:
Итак, вкратце:
Например: можно использовать повседневную среду разработки проекта. stop/start
Используется для временного перезапуска контейнера.
Прежде чем проект выпустит новую версию, вам необходимо использовать down
Остановите среду разработки, затем up
Запустите производственную среду. Поэтому выбирайте различные способы остановки в соответствии с вашими потребностями:
stop
сохранять данныеdown
Обеспечьте чистую окружающую средуНа основе примера yaml из раздела 2.2:
[root@icv-monitor-platform-dev docker]# docker-compose exec mysql bash
root@fceb9e329624:/# ls
bin dev entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint-initdb.d etc lib media opt root sbin sys usr
root@fceb9e329624:/# exit
exit
[root@icv-monitor-platform-dev docker]#
[root@icv-monitor-platform-dev docker]# docker network ls
NETWORK ID NAME DRIVER SCOPE
64ad1eca60f7 bridge bridge local
4689aefb8f9b docker_my-bridge bridge local
f2f555bed377 host host local
d02380dd3da4 none null local
[root@icv-monitor-platform-dev docker]#
Видно, что механизм docker-compose автоматически поможет нам добавить префикс docker_ перед my-bridge.
Compose использует имена проектов для изоляции сред друг от друга. Это имя проекта можно использовать в нескольких различных контекстах:
Имя проекта по умолчанию — это базовое имя каталога проекта:
-p
Доступный Параметры командной строкиCOMPOSE_PROJECT_NAME
环境变量Приходить设置自定义项目名称Каталог проекта по умолчанию: Compose базовый каталог для файлов。--project-directory
可以使用Параметры командной строки为其定义自定义值。
Compose сохраню твой Служить Все использованные тома。бегать时docker compose up
, если он находит какие-либо ранее запущенные контейнеры, он копирует тома из старого контейнера в новый контейнер. Этот процесс гарантирует, что любые данные, созданные вами в томе, не будут потеряны.
Compose кэширует конфигурацию, используемую для создания контейнеров. Compose повторно использует существующие контейнеры при перезапуске неизмененной службы. Повторное использование контейнеров означает, что вы можете очень быстро изменить свою среду.
Compose поддерживает переменные в файлах Compose. Вы можете использовать эти переменные, чтобы настроить комбинацию для разных сред или разных пользователей.
Подробнее см.замена переменной
Вы можете использовать это поле или создать несколько Compose файл для расширения Compose документextends
。
Compose можно использовать по-разному.
При разработке программного обеспечения решающее значение имеет возможность запускать приложения и взаимодействовать с ними в изолированной среде. Инструмент командной строки Compose можно использовать для создания сред и взаимодействия с ними.
Файлы Compose позволяют записывать и настраивать все зависимости приложения (данные библиотеки、очередь、кэш、Web Служить API и т. д.) метод. использовать Compose Инструмент командной строки, который работает с одной командой ( docker compose up
) Для каждой зависимости создается один или несколько контейнеров.
Вместе эти функции предоставляют разработчикам удобный способ начать работу над своими проектами. Сочинить Многостраничное руководство для разработчика по началу работы можно сократить до одного машиночитаемого документа. Compose документинекоторые команды。
Важной частью любого процесса непрерывного развертывания или непрерывной интеграции является набор автоматизированных тестов. Для автоматизированного сквозного тестирования требуется среда для запуска тестов. Сочинить Предоставьте удобные методы,для вашего набора тестовсоздаватьи Уничтожить изолированную тестовую среду。
Полные среды определяются с помощью существующих файлов Compose, которые можно уничтожить всего несколькими командами:
$ docker compose up -d
$ ./run_tests
$ docker compose down
Compose традиционно фокусируется на рабочих процессах разработки и тестирования.,Но с каждым выпуском,Мы добиваемся прогресса в разработке более ориентированных на производство функций.
Дополнительные сведения об использовании функций, ориентированных на производство, см. в этом документеСовмещено в производстве.
from flask import Flask
from redis import Redis
import os
import socket
app = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)
@app.route('/')
def hello():
redis.incr('hits')
return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
version: "3"
services:
redis:
image: redis
web:
build:
context: .
dockerfile: Dockerfile
ports:
- 8084:5000
environment:
REDIS_HOST: redis
FROM python:2.7
LABEL maintaner="Peng Xiao xiaoquwl@gmail.com"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD [ "python", "app.py" ]
[root@icv-monitor-platform-dev flask-redis]# ll
total 12
-rw-r--r-- 1 root root 432 May 8 09:49 app.py
-rw-r--r-- 1 root root 186 May 8 09:47 docker-compose.yml
-rw-r--r-- 1 root root 155 May 8 09:49 Dockerfile
[root@icv-monitor-platform-dev flask-redis]# docker-compose up
flaskredis_redis_1 is up-to-date
Recreating flaskredis_web_1 ... done
Attaching to flaskredis_redis_1, flaskredis_web_1
redis_1 | 1:C 08 May 2023 01:54:53.395 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1 | 1:C 08 May 2023 01:54:53.395 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1 | 1:C 08 May 2023 01:54:53.395 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis_1 | 1:M 08 May 2023 01:54:53.396 * monotonic clock: POSIX clock_gettime
redis_1 | 1:M 08 May 2023 01:54:53.396 * Running mode=standalone, port=6379.
redis_1 | 1:M 08 May 2023 01:54:53.396 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1 | 1:M 08 May 2023 01:54:53.396 # Server initialized
redis_1 | 1:M 08 May 2023 01:54:53.396 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis_1 | 1:M 08 May 2023 01:54:53.397 * Ready to accept connections
web_1 | * Serving Flask app "app" (lazy loading)
web_1 | * Environment: production
web_1 | WARNING: This is a development server. Do not use it in a production deployment.
web_1 | Use a production WSGI server instead.
web_1 | * Debug mode: on
web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
web_1 | * Restarting with stat
web_1 | * Debugger is active!
web_1 | * Debugger PIN: 703-966-402
Посетите ip:8084 и получите ответ:
web_1 | 10.51.11.8 - - [08/May/2023 02:02:38] "GET / HTTP/1.1" 200 -
web_1 | 10.51.11.8 - - [08/May/2023 02:02:38] "GET /favicon.ico HTTP/1.1" 404 -
Тест завершен,останавливаться Служить:
^CGracefully stopping... (press Ctrl+C again to force)
Stopping flaskredis_web_1 ... done
Stopping flaskredis_redis_1 ... done
[root@icv-monitor-platform-dev flask-redis]# docker-compose down
Removing flaskredis_web_1 ... done
Removing flaskredis_redis_1 ... done
Removing network flaskredis_default
[root@icv-monitor-platform-dev flask-redis]#
Docker Stack: организованное развертывание на производственном уровне с помощью Docker Compose.
Docker Compose — популярный инструмент,Используется для определения и запуска нескольких приложений Docker. но,Когда вам нужно развернуть приложение в производственной среде,Для управления жизненным циклом и расширяемостью контейнера могут потребоваться более мощные инструменты.
Это Докер Роль Stack — это инструмент для оркестрации и управления несколькими докерами. Докера Composeдокумент Приходить定义Служить,и предоставляет более мощные функции,например скользящее обновление、Автоматическое расширение и Служить найдено.
Основные шаги для развертывания на рабочем уровне с использованием Docker Stack
Docker Stack — это мощный инструмент для оркестрации и управления несколькими приложениями Docker в производственной среде. Это использование Докера Создавайте файлы, чтобы определить Служить и предоставлять более мощные функции, такие как непрерывные обновления, автоматическое расширение и обнаружение Служить. Если вы ищете более мощный инструмент для управления контейнером Docker, то Docker Стек — хороший выбор.
docker stack deploy wordpress -c=docker-compose.yml
Эта команда использует Docker Стек для развертывания приложений WordPress. Он указывает стек с именем «wordpress» и использование докера-compose.ymlдокумент中определенный Служить Приходитьзапускатьприложение。
В частности, эта команда делает следующее:
Файлы Docker Stack и Docker Compose для упрощения процесса развертывания приложений WordPress.,и предоставляет более мощные функции,Например, непрерывные обновления, автоматическое расширение и Служить Discovery.