Last active
June 22, 2020 11:56
-
-
Save fredix/6ef5c95c600dbbb9afc0e0538a93d90d to your computer and use it in GitHub Desktop.
docker stack yaml to run mastodon
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ce gist permet de lancer mastodon dans un swarm docker avec traefik.io. Il faut supprimer cette partie pour ne pas imposer des contraintes de location des conteneurs | |
deploy: | |
placement: | |
constraints: | |
- node.labels.location == home | |
# lancement sur le noeud leader avec : docker stack deploy --compose-file=mastodon.yml mastodon | |
version: '3' | |
services: | |
db: | |
restart: always | |
image: postgres:alpine | |
volumes: | |
- /sync/mastodon/postgres:/var/lib/postgresql/data | |
deploy: | |
placement: | |
constraints: | |
- node.labels.location == home | |
redis: | |
restart: always | |
image: redis:alpine | |
volumes: | |
- /sync/mastodon/redis:/data | |
deploy: | |
placement: | |
constraints: | |
- node.labels.location == home | |
web: | |
build: . | |
image: gargron/mastodon:v1.3.3 | |
restart: always | |
env_file: .env.production | |
command: bundle exec rails s -p 3000 -b '0.0.0.0' | |
ports: | |
- "3000" | |
depends_on: | |
- db | |
- redis | |
volumes: | |
- /sync/mastodon/public/assets:/mastodon/public/assets | |
- /sync/mastodon/public/system:/mastodon/public/system | |
- /sync/mastodon/public/packs:/mastodon/public/packs | |
networks: | |
- default | |
- traefik-net | |
deploy: | |
placement: | |
constraints: | |
- node.labels.location == home | |
labels: | |
- "traefik.port=3000" | |
- "traefik.docker.network=traefik-net" | |
- "traefik.frontend.rule=Host:pouet.fredix.xyz" | |
streaming: | |
build: . | |
image: gargron/mastodon:v1.3.3 | |
restart: always | |
env_file: .env.production | |
command: npm run start | |
ports: | |
- "4000" | |
depends_on: | |
- db | |
- redis | |
networks: | |
- default | |
- traefik-net | |
deploy: | |
placement: | |
constraints: | |
- node.labels.location == home | |
labels: | |
- "traefik.port=4000" | |
- "traefik.docker.network=traefik-net" | |
- "traefik.backend=streaming" | |
- "traefik.frontend.rule=Host:pouet.fredix.xyz;PathPrefixStrip:/api/v1/streaming" | |
sidekiq: | |
build: . | |
image: gargron/mastodon:v1.3.3 | |
restart: always | |
env_file: .env.production | |
command: bundle exec sidekiq -q default -q mailers -q pull -q push | |
depends_on: | |
- db | |
- redis | |
volumes: | |
- /sync/mastodon/public/system:/mastodon/public/system | |
deploy: | |
placement: | |
constraints: | |
- node.labels.location == home | |
networks: | |
traefik-net: | |
external: true | |
# le .env.prodcution : | |
# Service dependencies | |
REDIS_HOST=redis | |
REDIS_PORT=6379 | |
DB_HOST=db | |
DB_USER=postgres | |
DB_NAME=postgres | |
DB_PASS= | |
DB_PORT=5432 | |
# Federation | |
LOCAL_DOMAIN=domain.tld | |
LOCAL_HTTPS=true | |
# Application secrets | |
# Generate each with the `rake secret` task (`docker-compose run --rm web rake secret` if you use docker compose) | |
PAPERCLIP_SECRET=secret | |
SECRET_KEY_BASE=secret | |
OTP_SECRET=secret | |
# Registrations | |
# Single user mode will disable registrations and redirect frontpage to the first profile | |
SINGLE_USER_MODE=true | |
# Prevent registrations with following e-mail domains | |
# EMAIL_DOMAIN_BLACKLIST=example1.com|example2.de|etc | |
# Only allow registrations with the following e-mail domains | |
# EMAIL_DOMAIN_WHITELIST=example1.com|example2.de|etc | |
# Optionally change default language | |
DEFAULT_LOCALE=fr | |
# E-mail configuration | |
# Note: Mailgun and SparkPost (https://sparkpo.st/smtp) each have good free tiers | |
SMTP_SERVER=smtp.mailgun.org | |
SMTP_PORT=587 | |
SMTP_LOGIN=login | |
SMTP_PASSWORD=pass | |
SMTP_FROM_ADDRESS=email | |
#SMTP_AUTH_METHOD=plain | |
#SMTP_OPENSSL_VERIFY_MODE=peer | |
#SMTP_ENABLE_STARTTLS_AUTO=true | |
# Optional asset host for multi-server setups | |
# CDN_HOST=assets.example.com | |
# S3 (optional) | |
# S3_ENABLED=true | |
# S3_BUCKET= | |
# AWS_ACCESS_KEY_ID= | |
# AWS_SECRET_ACCESS_KEY= | |
# S3_REGION= | |
# S3_PROTOCOL=http | |
# S3_HOSTNAME=192.168.1.123:9000 | |
# S3 (Minio Config (optional) Please check Minio instance for details) | |
# S3_ENABLED=true | |
# S3_BUCKET= | |
# AWS_ACCESS_KEY_ID= | |
# AWS_SECRET_ACCESS_KEY= | |
# S3_REGION= | |
# S3_PROTOCOL=https | |
# S3_HOSTNAME= | |
# S3_ENDPOINT= | |
# Optional alias for S3 if you want to use Cloudfront or Cloudflare in front | |
# S3_CLOUDFRONT_HOST= | |
# Streaming API integration | |
STREAMING_API_BASE_URL=https://pouet.fredix.xyz/api/v1/streaming | |
# Advanced settings | |
# If you need to use pgBouncer, you need to disable prepared statements: | |
# PREPARED_STATEMENTS=false | |
Oops, ligne 97 :
- # le .env.prodcution :
+# le .env.production :
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Bonjour,
Comme ce docker-compose.yml ne se fait pas à partir des sources et qu'il n'y a pas de build, est-ce que la mise à jour de l'instance se déroule de la même manière qu'avec un build ? C'est-à-dire changer la version dans le docker-compose.yml, et exécuter :
docker-compose run --rm web rake db:migrate
docker-compose run --rm web rake assets:precompile
docker-compose up -d
EDIT : my bad, il faut les sources en fait >_< bref de toute façon ça serait logqiue que la mise à jour soit pareille