eBooru/docker-compose.yml
Earlopain 934c8e3b87
[Docker] Run daily maintenance
Remove whenever, it's not used in prod. Prod uses systemd timers.
This executes the daily task on container startup. My PC isn't going to
run when this would execute 99% of the time.
2022-12-09 18:16:53 +01:00

157 lines
3.5 KiB
YAML

version: "3"
x-environment: &common-env
DATABASE_URL: postgresql://danbooru:@postgres
DANBOORU_HOSTNAME: http://localhost:3000
DANBOORU_REDIS_URL: redis://redis
DANBOORU_ELASTICSEARCH_HOST: elastic
DANBOORU_MEMCACHED_SERVERS: memcached
DANBOORU_IQDBS_SERVER: http://iqdb:4567
# These are just development secrets, do not use them in production
SECRET_TOKEN: 1c58518a891eff4520cadc59afa9e378a9325f1247544ff258096e497f095f45
SESSION_SECRET_KEY: 44b4f44e9f253c406cbe727d403d500c1cecff943e4d2aea8f5447f28846fffe
x-depends-on: &common-depends-on
elastic:
condition: service_healthy
memcached:
condition: service_started
postgres:
condition: service_started
redis:
condition: service_started
services:
e621:
build:
context: ./
args:
COMPOSE_PROFILES: ${COMPOSE_PROFILES-}
image: e621
volumes:
- .:/app
- node_modules:/app/node_modules
- public_packs:/app/public/packs
- post_data:/app/public/data
- ./docker/cron_tasks/daily:/etc/periodic/daily
environment:
<<: *common-env
RAILS_ENV: development
depends_on:
<<: *common-depends-on
iqdb:
condition: service_started
tty: true
nginx:
image: nginx:stable-alpine
volumes:
- ./public:/app/public
- post_data:/app/public/data
- public_packs:/app/public/packs
- ./docker/default.conf.template:/etc/nginx/templates/default.conf.template
environment:
NGINX_HOST: localhost
NGINX_PORT: 3000
depends_on:
- e621
ports:
- "3000:3000"
postgres:
build: ./docker/postgres
environment:
- POSTGRES_USER=danbooru
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- db_data:/var/lib/postgresql/data
ports:
- "34517:5432"
redis:
image: redis:alpine
command: redis-server --save 10 1 --loglevel warning
volumes:
- redis_data:/data
memcached:
image: memcached:alpine
elastic:
image: elasticsearch:7.14.2
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- logger.level=WARN
- ES_JAVA_OPTS=-Xms1g -Xmx1g
volumes:
- elastic_data:/usr/share/elasticsearch/data
healthcheck:
interval: 10s
timeout: 2s
test: nc -z elastic 9200
iqdb:
build: ./docker/iqdb
environment:
- IQDB_HOSTNAME=localhost
- IQDB_PORT=62125
# Hardcoded in iqdbs Procfile
- IQDB_DATABASE_FILE=/home/vagrant/iqdbs/e621.db
- SINATRA_PORT=4567
- IMAGES_FOLDER=/data
- REDIS_URL=redis://redis
# Sinatra only binds to localhost in development, but to 0.0.0.0 for anything else
- APP_ENV=docker
depends_on:
- redis
volumes:
- post_data:/data
- iqdb_data:/home/vagrant/iqdbs
# Useful for development
tests:
image: e621
environment:
<<: *common-env
# Hide annoying output from libvips on corrupt files
VIPS_WARNING: "0"
volumes:
- .:/app
- node_modules:/app/node_modules
depends_on:
<<: *common-depends-on
entrypoint: bundle exec rails test
profiles:
- tests
rubocop:
image: e621
volumes:
- .:/app
entrypoint: bundle exec rubocop
profiles:
- rubocop
solargraph:
image: e621
entrypoint: solargraph socket -h 0.0.0.0
working_dir: $PWD
volumes:
- .:$PWD
ports:
- 7658:7658
profiles:
- solargraph
volumes:
post_data:
iqdb_data:
elastic_data:
db_data:
redis_data:
node_modules:
public_packs:
public_packs_test: