diff --git a/bin/wait-for-http b/bin/wait-for-http new file mode 100755 index 000000000..cb8a416bf --- /dev/null +++ b/bin/wait-for-http @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +# Script to wait until an http service is ready. Used by the Docker Compose +# file to wait until services are ready. +# +# Usage: bin/wait-for-http 3s http://google.com && echo ready + +set -euo pipefail + +URL="$1" +DELAY="${2:-3s}" + +until curl -sL "$URL" > /dev/null; do + echo "$URL not up yet; retrying in $DELAY" + sleep "$DELAY" +done diff --git a/docker-compose.yaml b/docker-compose.yaml index 15c15d94a..1be66efe5 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -21,10 +21,7 @@ version: "3.4" services: danbooru: - image: evazion/danbooru - # build: - # context: ../.. - # dockerfile: config/docker/Dockerfile.danbooru + image: danbooru ports: - "80:3000" environment: @@ -36,14 +33,21 @@ services: - "danbooru-images:/danbooru/public/data" depends_on: - postgres - command: ["bash", "-c", "bin/rails db:setup; bin/rails server -b 0.0.0.0"] + command: ["bash", "-c", "bin/rails db:setup; bin/rails db:migrate && bin/rails server -b 0.0.0.0"] user: root + delayed_jobs: + image: danbooru + environment: + - RAILS_ENV=production + - DATABASE_URL=postgresql://danbooru@postgres/danbooru + - DANBOORU_CANONICAL_URL=http://localhost + depends_on: + - danbooru + command: ["bash", "-c", "bin/wait-for-http http://danbooru:3000 3s && bin/delayed_job run"] + postgres: image: evazion/postgres - # build: - # context: . - # dockerfile: Dockerfile.postgres environment: POSTGRES_USER: danbooru POSTGRES_HOST_AUTH_METHOD: trust