]> Untitled Git - lemmy.git/blobdiff - docker/docker-compose.yml
add enable_federated_downvotes site option
[lemmy.git] / docker / docker-compose.yml
index 7ed15150c426c9159a6b37a0851377054b534126..3a68ea1310efad58c637db6f970d3f561192d015 100644 (file)
-version: "3.3"
+version: "3.7"
 
-networks:
-  # communication to web and clients
-  lemmyexternalproxy:
-  # communication between lemmy services
-  lemmyinternal:
-    driver: bridge
-    internal: true
+x-logging: &default-logging
+  driver: "json-file"
+  options:
+    max-size: "50m"
+    max-file: "4"
 
 services:
   proxy:
     image: nginx:1-alpine
-    networks:
-      - lemmyinternal
-      - lemmyexternalproxy
     ports:
-    # actual and only port facing any connection from outside 
+      # actual and only port facing any connection from outside
+      # Note, change the left number if port 1236 is already in use on your system
+      # You could use port 80 if you won't use a reverse proxy
       - "1236:1236"
       - "8536:8536"
     volumes:
-      - ./nginx.conf:/etc/nginx/nginx.conf:ro
+      - ./nginx.conf:/etc/nginx/nginx.conf:ro,Z
     restart: always
     depends_on:
       - pictrs
       - lemmy-ui
+    logging: *default-logging
 
   lemmy:
-    # image: dessalines/lemmy:dev
-    # use this to build your local lemmy server image for development
-    # run docker compose up --build
-    build: 
+    # use "image" to pull down an already compiled lemmy. make sure to comment out "build".
+    # image: dessalines/lemmy:0.18.1
+    # platform: linux/x86_64 # no arm64 support. uncomment platform if using m1.
+    # use "build" to build your local lemmy server image for development. make sure to comment out "image".
+    # run: docker compose up --build
+
+    build:
       context: ../
       dockerfile: docker/Dockerfile
-      # args: 
+      # args:
       #   RUST_RELEASE_MODE: release
+      #   CARGO_BUILD_FEATURES: default
     # this hostname is used in nginx reverse proxy and also for lemmy ui to connect to the backend, do not change
     hostname: lemmy
-    networks:
-      - lemmyinternal
     restart: always
     environment:
       - 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"
       - RUST_BACKTRACE=full
+    ports:
+      # prometheus metrics available at the path /metrics on port 10002 by default
+      # enable prometheus metrics by setting the CARGO_BUILD_FEATURES build arg above to "prometheus-metrics"
+      - "10002:10002"
     volumes:
-      - ./lemmy.hjson:/config/config.hjson
+      - ./lemmy.hjson:/config/config.hjson:Z
     depends_on:
       - postgres
       - pictrs
+    logging: *default-logging
 
   lemmy-ui:
-    image: dessalines/lemmy-ui:0.17.1
-    # use this to build your local lemmy ui image for development
-    # run docker compose up --build
-    # assuming lemmy-ui is cloned besides lemmy directory
-    # build: 
-    #  context: ../../../lemmy-ui
-    #  dockerfile: dev.dockerfile
-    networks:
-      - lemmyinternal
+    # use "image" to pull down an already compiled lemmy-ui. make sure to comment out "build".
+    image: dessalines/lemmy-ui:0.18.1
+    # platform: linux/x86_64 # no arm64 support. uncomment platform if using m1.
+    # use "build" to build your local lemmy ui image for development. make sure to comment out "image".
+    # run: docker compose up --build
+
+    # build:
+    #   context: ../../lemmy-ui # assuming lemmy-ui is cloned besides lemmy directory
+    #   dockerfile: dev.dockerfile
     environment:
       # this needs to match the hostname defined in the lemmy service
       - LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536
       # set the outside hostname here
       - LEMMY_UI_LEMMY_EXTERNAL_HOST=localhost:1236
-      - LEMMY_HTTPS=false
+      - LEMMY_UI_HTTPS=false
       - LEMMY_UI_DEBUG=true
     depends_on:
       - lemmy
     restart: always
+    logging: *default-logging
+    init: true
 
   pictrs:
-    image: asonix/pictrs:0.3.1
+    image: asonix/pictrs:0.4.0-beta.19
     # this needs to match the pictrs url in lemmy.hjson
     hostname: pictrs
     # 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
-    networks:
-      - lemmyinternal
     environment:
       - PICTRS_OPENTELEMETRY_URL=http://otel:4137
       - PICTRS__API_KEY=API_KEY
       - RUST_LOG=debug
       - RUST_BACKTRACE=full
+      - PICTRS__MEDIA__VIDEO_CODEC=vp9
+      - PICTRS__MEDIA__GIF__MAX_WIDTH=256
+      - PICTRS__MEDIA__GIF__MAX_HEIGHT=256
+      - PICTRS__MEDIA__GIF__MAX_AREA=65536
+      - PICTRS__MEDIA__GIF__MAX_FRAME_COUNT=400
     user: 991:991
     volumes:
-      - ./volumes/pictrs:/mnt
+      - ./volumes/pictrs:/mnt:Z
     restart: always
+    logging: *default-logging
 
   postgres:
     image: postgres:15-alpine
@@ -95,51 +106,26 @@ services:
     # You can use this technique to add them here
     # https://stackoverflow.com/a/30850095/1655478
     hostname: postgres
-    command: [
-      "postgres",
-      "-c", "session_preload_libraries=auto_explain",
-      "-c", "auto_explain.log_min_duration=5ms",
-      "-c", "auto_explain.log_analyze=true",
-      "-c", "track_activity_query_size=1048576"
-    ]
-    networks:
-      - lemmyinternal
-    # adding the external facing network to allow direct db access for devs
-      - lemmyexternalproxy
+    command:
+      [
+        "postgres",
+        "-c",
+        "session_preload_libraries=auto_explain",
+        "-c",
+        "auto_explain.log_min_duration=5ms",
+        "-c",
+        "auto_explain.log_analyze=true",
+        "-c",
+        "track_activity_query_size=1048576",
+      ]
     ports:
-    # use a different port so it doesnt conflict with potential postgres db running on the host
+      # use a different port so it doesnt conflict with potential postgres db running on the host
       - "5433:5432"
     environment:
       - POSTGRES_USER=lemmy
       - POSTGRES_PASSWORD=password
       - POSTGRES_DB=lemmy
     volumes:
-      - ./volumes/postgres:/var/lib/postgresql/data
+      - ./volumes/postgres:/var/lib/postgresql/data:Z
     restart: always
-
-  otel:
-    image: otel/opentelemetry-collector:latest
-    command: --config otel-local-config.yaml
-    networks:
-      - lemmyinternal
-      - lemmyexternalproxy
-    ports:
-      - "4317:4317"
-    volumes:
-      - type: bind
-        source: ./otel.yml
-        target: /otel-local-config.yaml
-    restart: unless-stopped
-    depends_on:
-      - jaeger
-  
-  jaeger:
-    image: jaegertracing/all-in-one:1
-    networks:
-      - lemmyinternal
-      - lemmyexternalproxy
-    ports:
-      - "14250:14250"
-      # To view traces, visit http://localhost:16686
-      - "16686:16686"
-    restart: unless-stopped
+    logging: *default-logging