compose/lemmy/docker-compose.yml
2024-12-29 10:16:16 +08:00

91 lines
2.0 KiB
YAML

x-logging: &default-logging
driver: "json-file"
options:
max-size: "50m"
max-file: "4"
services:
nginx:
container_name: lemmy-nginx
image: nginx:alpine
networks:
- lemmy
- proxy
volumes:
- ./nginx:/etc/nginx/conf.d:ro
restart: unless-stopped
logging: *default-logging
depends_on:
- pictrs
- lemmy-ui
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.lemmy.rule=Host(`lemmy.example.com`)"
- "traefik.http.routers.lemmy.entrypoints=websecure"
- "traefik.http.routers.lemmy.service=lemmy"
- "traefik.http.services.lemmy.loadBalancer.server.port=3000"
lemmy:
container_name: lemmy
image: dessalines/lemmy:0.19.5
networks:
- lemmy
env_file:
- docker.env
volumes:
- ./lemmy.hjson:/config/config.hjson
depends_on:
- postgres
- pictrs
restart: unless-stopped
logging: *default-logging
lemmy-ui:
container_name: lemmy-ui
image: dessalines/lemmy-ui:0.19.5
networks:
- lemmy
env_file:
- docker.env
volumes:
- ./lemmy-ui-themes:/app/extra_themes
depends_on:
- lemmy
restart: unless-stopped
logging: *default-logging
pictrs:
container_name: lemmy-pictrs
image: asonix/pictrs:0.5.16
networks:
- lemmy
# we can set options to pictrs like this, here we set max. image size and forced format for conversion
# entrypoint: /sbin/tini -- /usr/local/bin/pict-rs -p /mnt -m 4 --image-format webp
env_file:
- docker.env
user: 991:991
volumes:
- ./pictrs:/mnt:Z
restart: unless-stopped
logging: *default-logging
postgres:
container_name: lemmy-postgres
image: postgres:15-alpine
networks:
- lemmy
env_file:
- docker.env
shm_size: 1g
volumes:
- ./database:/var/lib/postgresql/data
restart: unless-stopped
logging: *default-logging
networks:
lemmy:
name: lemmy
proxy:
external: true