diff --git a/.dockerignore b/.dockerignore index a0d28dc62..96fd31c5b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,6 +4,9 @@ .github tests +# Docker Compose resources +docker-compose.yml + # Shaarli runtime resources cache/* data/* diff --git a/.gitattributes b/.gitattributes index 9d22f11b2..9a92bc37d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -35,6 +35,7 @@ doc/**/*.json export-ignore doc/**/*.md export-ignore .docker/ export-ignore .dockerignore export-ignore +docker-compose.* export-ignore Dockerfile* export-ignore Doxyfile export-ignore Makefile export-ignore diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..fc68bf30f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,56 @@ +--- +# Shaarli - Docker Compose script +# +# See: +# - https://shaarli.readthedocs.io/en/master/docker/shaarli-images/ +version: '3' + +networks: + http-proxy: + +volumes: + traefik-acme: + shaarli-cache: + shaarli-data: + +services: + shaarli: + image: shaarli/shaarli:master + build: ./ + networks: + - http-proxy + volumes: + - shaarli-cache:/var/www/shaarli/cache + - shaarli-data:/var/www/shaarli/data + labels: + traefik.domain: "${SHAARLI_VIRTUAL_HOST}" + traefik.backend: shaarli + traefik.frontend.rule: "Host:${SHAARLI_VIRTUAL_HOST}" + + traefik: + image: traefik + command: + - "--defaultentrypoints=http,https" + - "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https" + - "--entrypoints=Name:https Address::443 TLS" + - "--retry" + - "--docker" + - "--docker.domain=docker.localhost" + - "--docker.exposedbydefault=true" + - "--docker.watch=true" + - "--acme" + - "--acme.domains=${SHAARLI_VIRTUAL_HOST}" + - "--acme.email=${SHAARLI_LETSENCRYPT_EMAIL}" + - "--acme.entrypoint=https" + - "--acme.onhostrule=true" + - "--acme.storage=/acme/acme.json" + - "--acme.httpchallenge" + - "--acme.httpchallenge.entrypoint=http" + networks: + - http-proxy + ports: + - 80:80 + - 443:443 + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - traefik-acme:/acme