forked from e621ng/e621ng

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.
157 lines
3.5 KiB
YAML
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:
|