version: '2.4' services: http-serving: image: ${SOKO_IMAGE:-gentoo/soko:latest} volumes: - type: "bind" source: "/var/log/soko" target: "/var/log/soko" ports: - 127.0.0.1:5000:5000 labels: com.centurylinklabs.watchtower.enable: "true" restart: always environment: SOKO_LOG_FILE: '/var/log/soko/web.log' depends_on: - db mem_limit: 4G updater: image: ${SOKO_UPDATER_IMAGE:-gentoo/soko-updater:latest} volumes: - type: "bind" source: "/mnt/packages-tree" target: "/mnt/packages-tree" - type: "bind" source: "/var/cache/pgo-egencache" target: "/var/cache/pgo-egencache" - type: "bind" source: "/var/log/soko" target: "/var/log/soko" labels: com.centurylinklabs.watchtower.enable: "true" environment: SOKO_LOG_FILE: '/var/log/soko/updater.log' SOKO_GITHUB_TOKEN: '${SOKO_GITHUB_TOKEN}' depends_on: - db selfcheck: image: ${SOKO_IMAGE:-gentoo/soko:latest} volumes: - type: "bind" source: "/mnt/selfcheck-packages-tree" target: "/mnt/selfcheck-packages-tree" - type: "bind" source: "/var/log/soko" target: "/var/log/soko" ports: - 127.0.0.1:5001:5000 labels: com.centurylinklabs.watchtower.enable: "true" restart: always environment: SOKO_LOG_FILE: '/var/log/soko/selfcheck.log' entrypoint: /go/src/soko/bin/soko --enable-selfchecks depends_on: - db db: image: postgres:12 restart: always environment: POSTGRES_USER: ${SOKO_POSTGRES_USER:-root} POSTGRES_PASSWORD: ${SOKO_POSTGRES_PASSWORD:-root} POSTGRES_DB: ${SOKO_POSTGRES_DB:-soko} shm_size: 512mb volumes: - ${POSTGRES_DATA_PATH:-/var/lib/postgresql/data}:/var/lib/postgresql/data watchtower: image: containrrr/watchtower:1.7.1 restart: always volumes: # docker has an issue, that if it mounts a socket directly, upon daemon restart, # the socket is recreated and the new one isn't mounted. Mounting the whole /var/run # directory is scatchy, so add another socket position for the daemon to create, and # bind mount it. Add to docker daemon those args: # --host=unix:///var/run/docker.sock --host=unix:///var/run/docker-watchtower/docker.sock - /var/run/docker-watchtower:/var/run/docker-watchtower - /root/.docker/config.json:/config.json command: - --label-enable - --cleanup - --schedule - "0 0 * * * *" - --host - unix:///var/run/docker-watchtower/docker.sock