-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.test.yml
More file actions
92 lines (87 loc) · 2.93 KB
/
Copy pathdocker-compose.test.yml
File metadata and controls
92 lines (87 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# Stack de teste isolada: gateway real + este sincronizador.
#
# Nome de projeto, nomes de container e portas proprios, para conviver com
# qualquer outra stack na mesma maquina. Tudo preso em 127.0.0.1 -- o painel le
# credencial, e nada disso vai para a rede.
#
# docker compose -f docker-compose.test.yml up -d
# docker compose -f docker-compose.test.yml down -v
#
# Nao depende de nenhuma stack de artigo: e uma stack do proprio repositorio.
name: 9rtksync-test
services:
9rtk-test-router:
image: decolua/9router:latest
container_name: 9rtk-test-router
hostname: 9rtk-test-router
networks:
- 9rtksync-test-net
restart: unless-stopped
ports:
- "127.0.0.1:19128:20128"
environment:
- DATA_DIR=/app/data
- PORT=20128
- HOSTNAME=0.0.0.0
- NODE_ENV=production
# Obrigatorias e sem valor padrao: um default publicado em arquivo de
# exemplo vira a credencial real de quem so copiou e colou.
- INITIAL_PASSWORD=${INITIAL_PASSWORD:?defina INITIAL_PASSWORD no .env}
- JWT_SECRET=${JWT_SECRET:?defina JWT_SECRET no .env (openssl rand -hex 32)}
- REQUIRE_API_KEY=false
# Aceitavel apenas porque a porta acima esta presa em 127.0.0.1.
- REQUIRE_LOGIN=false
volumes:
- gateway_data:/app/data
healthcheck:
test:
- CMD-SHELL
- >-
node -e "require('http').get('http://127.0.0.1:20128/',r=>process.exit(r.statusCode<500?0:1)).on('error',()=>process.exit(1))"
interval: 10s
timeout: 5s
retries: 20
# O primeiro boot roda migracoes e cria o banco.
start_period: 45s
9rtk-test-sync:
build: .
image: ghcr.io/pathbit/9rtksync:local
container_name: 9rtk-test-sync
hostname: 9rtk-test-sync
networks:
- 9rtksync-test-net
restart: unless-stopped
ports:
# Porta interna 9090 nos tres sincronizadores; publicada em 19091 aqui.
- "127.0.0.1:19091:9090"
environment:
- DATA_DIR=/app/data/db
- DB_PATH=/app/data/db/data.sqlite
- ROUTER_URL=http://9rtk-test-router:20128
- WEB_PORT=9090
- SYNC_INTERVAL=60
- REFRESH_MARGIN=900
- CRON_ENABLED=1
- LOG_DIR=/app/data/logs
- LOG_LEVEL=INFO
# Desligada na stack de teste: o CI nao deve sair para a internet.
- CREDENTIAL_CHECK_ENABLED=0
volumes:
- gateway_data:/app/data
depends_on:
9rtk-test-router:
condition: service_healthy
healthcheck:
test: ["CMD", "/opt/venv/bin/python3", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:9090/healthz', timeout=3)"]
interval: 15s
timeout: 5s
retries: 3
start_period: 10s
volumes:
gateway_data:
networks:
9rtksync-test-net:
name: 9rtksync-test-net
# Rede propria tambem na bancada de teste. Na rede default, duas stacks
# no mesmo daemon resolvem o mesmo nome curto e nao da para saber a qual
# gateway o sincronizador se conectou.