]> Untitled Git - lemmy.git/blobdiff - docker/dev/docker-compose.yml
Speeding up comment-ltree migration, fixing index creation. Fixes #2664 (#2670)
[lemmy.git] / docker / dev / docker-compose.yml
index 5281ec771b50574ac9fc5fa58803a99be4b6e7d1..639f798a0362f84f5c93bc4fdd0a132443042fad 100644 (file)
-version: '3.3'
+version: "3.3"
+
+networks:
+  # communication to web and clients
+  lemmyexternalproxy:
+  # communication between lemmy services
+  lemmyinternal:
+    driver: bridge
+    internal: true
 
 services:
-  nginx:
+  proxy:
     image: nginx:1-alpine
+    networks:
+      - lemmyinternal
+      - lemmyexternalproxy
     ports:
+    # actual and only port facing any connection from outside 
       - "1236:1236"
+      - "8536:8536"
     volumes:
-      - ./nginx.conf:/etc/nginx/nginx.conf
+      - ./nginx.conf:/etc/nginx/nginx.conf:ro
     restart: always
     depends_on:
       - pictrs
       - lemmy-ui
 
   lemmy:
-    image: lemmy-dev:latest
-    ports:
-      - "8536:8536"
+    # image: dessalines/lemmy:dev
+    # use this to build your local lemmy server image for development
+    # run docker compose up --build
+    build: 
+      context: ../..
+      dockerfile: docker/dev/Dockerfile
+    # 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
     volumes:
-      - ../lemmy.hjson:/config/config.hjson
-    depends_on: 
-      - pictrs
+      - ./lemmy.hjson:/config/config.hjson
+    depends_on:
       - postgres
+      - pictrs
 
   lemmy-ui:
-    image: dessalines/lemmy-ui:0.14.2
-    restart: always
+    image: dessalines/lemmy-ui:dev
+    # 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
     environment:
-      - LEMMY_INTERNAL_HOST=lemmy:8536
-      - LEMMY_EXTERNAL_HOST=localhost:1234
+      # 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
-    depends_on: 
+      - LEMMY_UI_DEBUG=true
+    depends_on:
       - lemmy
+    restart: always
+
+  pictrs:
+    image: asonix/pictrs:0.3.1
+    # 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
+    user: 991:991
+    volumes:
+      - ./volumes/pictrs:/mnt
+    restart: always
 
   postgres:
-    image: postgres:12-alpine
+    image: postgres:15-alpine
+    # this needs to match the database host in lemmy.hson
+    # Tune your settings via
+    # https://pgtune.leopard.in.ua/#/
+    # 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"
+      # Tuning config
+      # "-c", "max_connections=200",
+      # "-c", "shared_buffers=3GB",
+      # "-c", "effective_cache_size=9GB",
+      # "-c", "maintenance_work_mem=768MB",
+      # "-c", "checkpoint_completion_target=0.9",
+      # "-c", "checkpoint_timeout=86400",
+      # "-c", "wal_buffers=16MB",
+      # "-c", "default_statistics_target=100",
+      # "-c", "random_page_cost=4",
+      # "-c", "effective_io_concurrency=2",
+      # "-c", "work_mem=4GB",
+      # "-c", "min_wal_size=1GB",
+      # "-c", "max_wal_size=30GB",
+      # "-c", "max_worker_processes=4",
+      # "-c", "max_parallel_workers_per_gather=2",
+      # "-c", "max_parallel_workers=4",
+      # "-c", "max_parallel_maintenance_workers=2"
+    ]
+    networks:
+      - lemmyinternal
+    # adding the external facing network to allow direct db access for devs
+      - lemmyexternalproxy
     ports:
-      # use a different port so it doesnt conflict with postgres 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
@@ -48,9 +132,29 @@ services:
       - ./volumes/postgres:/var/lib/postgresql/data
     restart: always
 
-  pictrs:
-    image: asonix/pictrs:v0.2.6-r2
-    user: 991:991
+  otel:
+    image: otel/opentelemetry-collector:latest
+    command: --config otel-local-config.yaml
+    networks:
+      - lemmyinternal
+      - lemmyexternalproxy
+    ports:
+      - "4317:4317"
     volumes:
-      - ./volumes/pictrs:/mnt
-    restart: always
+      - 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