version: "3.7"
services:
grampsweb: &grampsweb
container_name: grampsweb
image: ghcr.io/gramps-project/grampsweb:latest
restart: always
environment: &grampsweb-env
GRAMPSWEB_TREE: "Gramps Web" # will create a new tree if not exists
VIRTUAL_PORT: "5000"
VIRTUAL_HOST: "www.my-domain.com,my-domain.com" # e.g. gramps.mydomain.com
LETSENCRYPT_HOST: "www.my-domain.com,my-domain.com" # e.g. gramps.mydomain.com
LETSENCRYPT_EMAIL: "joea@my-email.com" # your email
GRAMPSWEB_CELERY_CONFIG__broker_url: "redis://grampsweb_redis:6379/0"
GRAMPSWEB_CELERY_CONFIG__result_backend: "redis://grampsweb_redis:6379/0"
GRAMPSWEB_RATELIMIT_STORAGE_URI: redis://grampsweb_redis:6379/1
GRAMPSWEB_EMAIL_USE_TLS: "false"
GRAMPSWEB_EMAIL_HOST: "mail.someplace.com"
GRAMPSWEB_EMAIL_HOST_USER: "admin@my-domain.com"
GRAMPSWEB_EMAIL_PORT: 587
GRAMPSWEB_EMAIL_HOST_PASSWORD: "sOmE-WoRd"
GRAMPSWEB_DEFAULT_FROM_EMAIL: "admin@my-domain.com"
GRAMPSWEB_BASE_URL: "https://www.my-domain.com"
volumes:
- gramps_users:/app/users
- gramps_index:/app/indexdir
- gramps_thumb_cache:/app/thumbnail_cache
- gramps_cache:/app/cache
- gramps_secret:/app/secret
- gramps_db:/root/.gramps/grampsdb
- gramps_media:/app/media
- gramps_tmp:/tmp
networks:
- proxy-tier
- default
grampsweb_celery:
<<: *grampsweb # YAML merge key copying the entire grampsweb service config
container_name: grampsweb_celery
depends_on:
- grampsweb_redis
environment:
<<: *grampsweb-env # YAML merge key copying the grampsweb environment config
# overriding let's encrypt variables since celery is not exposed
VIRTUAL_PORT: "5000"
VIRTUAL_HOST: "www.my-domain.com.my-domain.com"
LETSENCRYPT_HOST: "www.my-domain.com,my-domain.com"
LETSENCRYPT_EMAIL: "joea@my-email.com"
command: celery -A gramps_webapi.celery worker --loglevel=INFO
grampsweb_redis:
image: redis:alpine
container_name: grampsweb_redis
restart: always
proxy:
image: nginxproxy/nginx-proxy
container_name: nginx-proxy
restart: always
ports:
- 80:80
- 443:443
environment:
ENABLE_IPV6: "false"
volumes:
- ./nginx_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro
- conf:/etc/nginx/conf.d
- dhparam:/etc/nginx/dhparam
- certs:/etc/nginx/certs:ro
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- proxy-tier
acme-companion:
image: nginxproxy/acme-companion
container_name: nginx-proxy-acme
restart: always
environment:
NGINX_PROXY_CONTAINER: nginx-proxy
volumes:
- certs:/etc/nginx/certs:rw
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- acme:/etc/acme.sh
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- proxy-tier
depends_on:
- proxy
volumes:
acme:
certs:
conf:
dhparam:
vhost.d:
html:
gramps_users:
gramps_index:
gramps_thumb_cache:
gramps_cache:
gramps_secret:
gramps_db:
gramps_media:
gramps_tmp:
networks:
proxy-tier: