Примечание: я новичок в Docker / Swarm.
Я создал контейнеры WordPress / MySQL в режиме Docker Swarm, работающем в Azure, согласно https://docs.docker.com/compose/wordpress/.
Кластер создансогласно https://docs.docker.com/docker-for-azure/
вот мой dockerfile:
======================
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
=======================
согласно официальной документации, я могу публиковать порты, используя флаг --published
, однако мне нужно знать, как включить этов Dockerfile.
Запуск приложений Теперь вы можете начать создавать контейнеры и службы.
$ docker run hello-world
Вы также можете запускать веб-сайты.Порты, предоставляемые с помощью --publish, автоматически отображаются через балансировщик нагрузки платформы:
$ docker service create --name nginx --publish published=80,target=80 nginx
После запуска найдите выход DefaultDNSTarget на порталах AWS или Azure для доступа к сайту.
Используя docker ps, я вижу, что он прослушивает 0.0.0.0:8000->80, однако без службы он не будет автоматически создавать правило балансировки нагрузки Azure для контейнера.
swarm-manager000000:~/compose$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c94587acd97 wordpress:latest "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 0.0.0.0:8000->80/tcp compose_wordpress_1
aff61e0022a8 mysql:5.7 "docker-entrypoint.s…" 10 minutes ago Up 10 minutes 3306/tcp, 33060/tcp compose_db_1
5d2fdb3d75c4 docker4x/l4controller-azure:18.09.2-ce-azure1 "loadbalancer run --…" 2 hours ago Up 2 hours editions_controller
d5f0a8a91f66 docker4x/meta-azure:18.09.2-ce-azure1 "metaserver -iaas_pr…" 2 hours ago Up 2 hours 10.0.0.4:9024->8080/tcp meta-azure
93c6571b6ee6 docker4x/guide-azure:18.09.2-ce-azure1 "/entry.sh" 2 hours ago Up 2 hours editions_guide
b6cad5676b10 docker4x/logger-azure:18.09.2-ce-azure1 "python /server.py" 2 hours ago Up 2 hours 0.0.0.0:514->514/udp editions_logger
d2a74fe21751 docker4x/agent-azure:18.09.2-ce-azure1 "supervisord --confi…" 2 hours ago Up 2 hours agent
swarm-manager000000:~/compose$
Если, например, я попытался создать сервис, который сопоставлен с новым образом, например: nginx.это немедленно создаст входящее правило в балансировщике нагрузки Azure.
$ docker service create --name nginx --publish published=80,target=80 nginx
Посоветуйте, пожалуйста, как сопоставить службу с существующим контейнером WordPress или как обновить Dockerfile, чтобы создать службу и использовать --published
.
Спасибо