docker-compose.yml 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # https://docs.docker.com/compose/compose-file/compose-file-v2/
  2. # [...] By default, every container joins an application-wide default network,
  3. # and is discoverable at a hostname that’s the same as the service name. [...]
  4. # [ansible's docker_service module] works with compose versions 1 and 2.
  5. # https://docs.ansible.com/ansible/latest/modules/docker_service_module.html
  6. version: '2.1'
  7. services:
  8. db:
  9. image: postgres:10.5-alpine
  10. environment:
  11. POSTGRES_DB: koel
  12. POSTGRES_USER: koel
  13. POSTGRES_PASSWORD: secret
  14. # WORKAROUND cannot whitelist required caps [chown, setuid, setgid, fowner]
  15. cap_drop: [setpcap, mknod, audit_write, net_raw, fsetid,
  16. kill, net_bind_service, sys_chroot, setfcap]
  17. # --security-opt=no-new-privileges
  18. # https://docs.docker.com/engine/reference/builder/#healthcheck
  19. # https://github.com/docker-library/healthcheck/blob/master/postgres/docker-healthcheck
  20. # TODO use env vars
  21. healthcheck:
  22. test: echo 'SELECT 1' | psql --username koel --dbname koel >/dev/null || exit 1
  23. restart: unless-stopped
  24. web:
  25. image: fphammerle/koel:3.7.2-wait-amd64
  26. environment:
  27. DB_CONNECTION: pgsql
  28. DB_HOST: db
  29. DB_PORT: 5432
  30. DB_DATABASE: koel
  31. DB_PASSWORD: secret
  32. ports: ['127.0.0.1:8080:8080']
  33. # --security-opt=no-new-privileges
  34. cap_drop: [all]
  35. # removed condition 'service_healthy' since:
  36. # - [Compose] version 3 no longer supports the condition form of depends_on.
  37. # https://docs.docker.com/compose/compose-file/#depends_on
  38. # - script run-koel.sh now waits for db's tcp port to become available
  39. # as recommended by https://docs.docker.com/compose/startup-order/
  40. depends_on: [db]
  41. restart: unless-stopped