51 lines
1.5 KiB
YAML
51 lines
1.5 KiB
YAML
services:
|
|
couchdb:
|
|
image: couchdb:3
|
|
restart: unless-stopped
|
|
environment:
|
|
SERVICE_FQDN_COUCHDB_5984:
|
|
COUCHDB_USER: ${COUCHDB_USER:-admin}
|
|
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
|
|
expose:
|
|
- "5984"
|
|
volumes:
|
|
- couchdb_data:/opt/couchdb/data
|
|
- ./couchdb/local.d/cors.ini:/opt/couchdb/etc/local.d/cors.ini:ro
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsS", "http://localhost:5984/_up"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 12
|
|
start_period: 30s
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.couchdb.rule=Host(`${SERVICE_FQDN_COUCHDB_5984}`)"
|
|
- "traefik.http.routers.couchdb.entrypoints=https"
|
|
- "traefik.http.routers.couchdb.tls=true"
|
|
- "traefik.http.services.couchdb.loadbalancer.server.port=5984"
|
|
|
|
couchdb-init:
|
|
image: curlimages/curl:latest
|
|
restart: "no"
|
|
depends_on:
|
|
couchdb:
|
|
condition: service_healthy
|
|
environment:
|
|
COUCHDB_USER: ${COUCHDB_USER:-admin}
|
|
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
|
|
entrypoint: ["sh", "-c"]
|
|
command:
|
|
- |
|
|
set -eu
|
|
base="http://$${COUCHDB_USER}:$${COUCHDB_PASSWORD}@couchdb:5984"
|
|
for db in _users _replicator _global_changes; do
|
|
code=$$(curl -s -o /dev/null -w "%{http_code}" -X PUT "$$base/$$db")
|
|
case "$$code" in
|
|
201|202|412) echo "$$db: ok ($$code)" ;;
|
|
*) echo "$$db: failed ($$code)"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
volumes:
|
|
couchdb_data:
|