Я пытаюсь написать файл docker-compose шлюза Конг-API, который я могу использовать для развертывания в качестве стека в док-узлах, работающих в режиме Docker Swarm.
У kong есть собственный официальный файл docker-compose, но, к сожалению, он использует версию 2.1, и поэтому мне нужно удалить некоторые функции, которые зависят от условий.
Ниже приводится docker-compose.yml Iнаписал, чтобы сделать его совместимым со стеком докера. Проблема в том, что служба миграции не работает
version: '3.4'
networks:
net-kong:
services: consul:
image: progrium/consul:latest networks:
- net-kong command: -server -bootstrap -ui-dir /ui healthcheck:
test: ["CMD-SHELL", "curl -I -s -L http://127.0.0.1:8500 || exit 1"]
interval: 5s
retries: 10
ports:
- 8500:8500
expose:
- 53
- 8300
- 8301
- 8302
- 8400
- 8500
dns:
- 127.0.0.1
nginx-lb:
image: nginx:kong
networks:
- net-kong
depends_on:
- consul
ports:
- 8000:8000
- 8443:8443
- 8001:8001
- 8444:8444
expose:
- 8000
- 8443
- 8001
- 8444
links:
- consul:consul
command: >
/bin/containerpilot
-config file:///etc/containerpilot/containerpilot.json
nginx -g "daemon off;"
kong-database:
image: postgres:9.5
networks:
- net-kong
environment:
- POSTGRES_USER=kong
- POSTGRES_DB=kong
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 10s
timeout: 5s
retries: 5
kong-migration:
image: kong
networks:
- net-kong
depends_on:
- kong-database
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
command: kong migrations up
kong:
image: kong
networks:
- net-kong
depends_on:
- kong-database
- kong-migration
environment:
- KONG_DATABASE=postgres
- KONG_PG_HOST=kong-database
- KONG_PG_DATABASE=kong
- KONG_ADMIN_LISTEN=0.0.0.0:8001
expose:
- 8000
- 8001
- 8443
- 8444
healthcheck:
test: ["CMD-SHELL", "curl -I -s -L http://127.0.0.1:8000 || exit 1"]
interval: 5s
retries: 10
Насколько я понимаю, она не работает, потому что миграция пытается выполнить перед базой данныхСервис работает. Что приведет к ошибке.Пожалуйста, помогите мне в этом.
Миграции не работают, и даже журналы ничего не показывают при вводе. docker service logs service-name