]> Untitled Git - lemmy.git/blob - docker/docker-compose.yml
Add `lemmyexternalproxy` to `lemmy` so that it can talk to the internet (#2960)
[lemmy.git] / docker / docker-compose.yml
1 version: "3.3"
2
3 networks:
4   # communication to web and clients
5   lemmyexternalproxy:
6   # communication between lemmy services
7   lemmyinternal:
8     driver: bridge
9     internal: true
10
11 services:
12   proxy:
13     image: nginx:1-alpine
14     networks:
15       - lemmyinternal
16       - lemmyexternalproxy
17     ports:
18       # actual and only port facing any connection from outside
19       # Note, change the left number if port 80 is already in use on your system (or you want to run a reverse proxy outside this config)
20       - "80:80"
21       - "8536:8536"
22     volumes:
23       - ./nginx.conf:/etc/nginx/nginx.conf:ro,Z
24     restart: always
25     depends_on:
26       - pictrs
27       - lemmy-ui
28
29   lemmy:
30     # image: dessalines/lemmy:dev
31     # use this to build your local lemmy server image for development
32     # run docker compose up --build
33     build:
34       context: ../
35       dockerfile: docker/Dockerfile
36       # args:
37       #   RUST_RELEASE_MODE: release
38     # this hostname is used in nginx reverse proxy and also for lemmy ui to connect to the backend, do not change
39     hostname: lemmy
40     networks:
41       - lemmyinternal
42       - lemmyexternalproxy
43     restart: always
44     environment:
45       - RUST_LOG="warn,lemmy_server=debug,lemmy_api=debug,lemmy_api_common=debug,lemmy_api_crud=debug,lemmy_apub=debug,lemmy_db_schema=debug,lemmy_db_views=debug,lemmy_db_views_actor=debug,lemmy_db_views_moderator=debug,lemmy_routes=debug,lemmy_utils=debug,lemmy_websocket=debug"
46       - RUST_BACKTRACE=full
47     volumes:
48       - ./lemmy.hjson:/config/config.hjson:Z
49     depends_on:
50       - postgres
51       - pictrs
52
53   lemmy-ui:
54     image: dessalines/lemmy-ui:0.17.1
55     # use this to build your local lemmy ui image for development
56     # run docker compose up --build
57     # assuming lemmy-ui is cloned besides lemmy directory
58     # build:
59     #   context: ../../lemmy-ui
60     #   dockerfile: dev.dockerfile
61     networks:
62       - lemmyinternal
63     environment:
64       # this needs to match the hostname defined in the lemmy service
65       - LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536
66       # set the outside hostname here
67       - LEMMY_UI_LEMMY_EXTERNAL_HOST=localhost:1236
68       - LEMMY_HTTPS=false
69       - LEMMY_UI_DEBUG=true
70     depends_on:
71       - lemmy
72     restart: always
73
74   pictrs:
75     image: asonix/pictrs:0.4.0-beta.19
76     # this needs to match the pictrs url in lemmy.hjson
77     hostname: pictrs
78     # we can set options to pictrs like this, here we set max. image size and forced format for conversion
79     # entrypoint: /sbin/tini -- /usr/local/bin/pict-rs -p /mnt -m 4 --image-format webp
80     networks:
81       - lemmyinternal
82     environment:
83       - PICTRS_OPENTELEMETRY_URL=http://otel:4137
84       - PICTRS__API_KEY=API_KEY
85       - RUST_LOG=debug
86       - RUST_BACKTRACE=full
87       - PICTRS__MEDIA__VIDEO_CODEC=vp9
88       - PICTRS__MEDIA__GIF__MAX_WIDTH=256
89       - PICTRS__MEDIA__GIF__MAX_HEIGHT=256
90       - PICTRS__MEDIA__GIF__MAX_AREA=65536
91       - PICTRS__MEDIA__GIF__MAX_FRAME_COUNT=400
92     user: 991:991
93     volumes:
94       - ./volumes/pictrs:/mnt:Z
95     restart: always
96
97   postgres:
98     image: postgres:15-alpine
99     # this needs to match the database host in lemmy.hson
100     # Tune your settings via
101     # https://pgtune.leopard.in.ua/#/
102     # You can use this technique to add them here
103     # https://stackoverflow.com/a/30850095/1655478
104     hostname: postgres
105     command:
106       [
107         "postgres",
108         "-c",
109         "session_preload_libraries=auto_explain",
110         "-c",
111         "auto_explain.log_min_duration=5ms",
112         "-c",
113         "auto_explain.log_analyze=true",
114         "-c",
115         "track_activity_query_size=1048576",
116       ]
117     networks:
118       - lemmyinternal
119       # adding the external facing network to allow direct db access for devs
120       - lemmyexternalproxy
121     ports:
122       # use a different port so it doesnt conflict with potential postgres db running on the host
123       - "5433:5432"
124     environment:
125       - POSTGRES_USER=lemmy
126       - POSTGRES_PASSWORD=password
127       - POSTGRES_DB=lemmy
128     volumes:
129       - ./volumes/postgres:/var/lib/postgresql/data:Z
130     restart: always