@dessalines@lemmy.ml (I mention you since you are the image maintainer…)

Summary

Using docker images > 0.19.1 leads to crash of the lemmy-1 process (exit code 0 and then 139) on ARM64 (not tested on X86_64)

Steps to Reproduce Take a WORKING docker-compose file such as:

version: "3.7"

x-logging: &default-logging
  driver: "json-file"
  options:
    max-size: "50m"
    max-file: "4"

services:

  lemmy:
    image: dessalines/lemmy:0.19.1
    hostname: lemmy
    restart: unless-stopped
    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:
      - "8536:8536"
      - "6669:6669"
    volumes:
      - ./lemmy.hjson:/config/config.hjson:Z
    depends_on:
      - postgres
      - pictrs
    logging: *default-logging

  lemmy-ui:
    # use "image" to pull down an already compiled lemmy-ui. make sure to comment out "build".
    image: dessalines/lemmy-ui:0.19.1
    ports:
      - "1235:1234"
    environment:
      - LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536
      - LEMMY_UI_LEMMY_EXTERNAL_HOST=192.168.153.3:8536
      - LEMMY_UI_HTTPS=false
      - LEMMY_UI_DEBUG=true
    depends_on:
      - lemmy
    restart: unless-stopped
    logging: *default-logging
    init: true

  pictrs:
    image: asonix/pictrs:0.5.0-rc.2
    hostname: pictrs
    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
    ports:
      - "127.0.0.1:8537:8080"
      - "127.0.0.1:6670:6669"
    volumes:
      - ./volumes/pictrs:/mnt:Z
    restart: unless-stopped
    logging: *default-logging

  postgres:
    image: postgres:16-alpine
    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",
      ]
    ports:
      - "5433:5432"
    environment:
      - POSTGRES_USER=lemmy
      - POSTGRES_PASSWORD=__REDACTED__
      - POSTGRES_DB=lemmy
    volumes:
      - ./volumes/postgres:/var/lib/postgresql/data:Z
    restart: unless-stopped
    logging: *default-logging

Change the image of lemmy (lemmy-ui can be whatever, it’s not a problem) to a > 0.19.1

version: "3.7"

x-logging: &default-logging
  driver: "json-file"
  options:
    max-size: "50m"
    max-file: "4"

services:

  lemmy:
    image: dessalines/lemmy:0.19.3
    hostname: lemmy
    restart: unless-stopped
    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:
      - "8536:8536"
      - "6669:6669"
    volumes:
      - ./lemmy.hjson:/config/config.hjson:Z
    depends_on:
      - postgres
      - pictrs
    logging: *default-logging

  lemmy-ui:
    # use "image" to pull down an already compiled lemmy-ui. make sure to comment out "build".
    image: dessalines/lemmy-ui:0.19.3
    ports:
      - "1235:1234"
    environment:
      - LEMMY_UI_LEMMY_INTERNAL_HOST=lemmy:8536
      - LEMMY_UI_LEMMY_EXTERNAL_HOST=192.168.153.3:8536
      - LEMMY_UI_HTTPS=false
      - LEMMY_UI_DEBUG=true
    depends_on:
      - lemmy
    restart: unless-stopped
    logging: *default-logging
    init: true

  pictrs:
    image: asonix/pictrs:0.5.0-rc.2
    hostname: pictrs
    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
    ports:
      - "127.0.0.1:8537:8080"
      - "127.0.0.1:6670:6669"
    volumes:
      - ./volumes/pictrs:/mnt:Z
    restart: unless-stopped
    logging: *default-logging

  postgres:
    image: postgres:16-alpine
    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",
      ]
    ports:
      - "5433:5432"
    environment:
      - POSTGRES_USER=lemmy
      - POSTGRES_PASSWORD=__REDACTED__
      - POSTGRES_DB=lemmy
    volumes:
      - ./volumes/postgres:/var/lib/postgresql/data:Z
    restart: unless-stopped
    logging: *default-logging

docker-compose up <-- this leads to an exit code 0 and then 139 of contain lemmy-1

Technical Details

File lemmy_log.out

postgres-1 |
postgres-1 | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres-1 |
postgres-1 | 2024-03-19 23:30:55.483 UTC [1] LOG: starting PostgreSQL 16.2 on aarch64-unknown-linux-musl, compiled by gcc (Alpine 13.2.1_git20231014) 13.2.1 20231014, 64-bit
postgres-1 | 2024-03-19 23:30:55.483 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
postgres-1 | 2024-03-19 23:30:55.483 UTC [1] LOG: listening on IPv6 address "::", port 5432
postgres-1 | 2024-03-19 23:30:55.494 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres-1 | 2024-03-19 23:30:55.508 UTC [24] LOG: database system was shut down at 2024-03-19 23:30:51 UTC
postgres-1 | 2024-03-19 23:30:55.519 UTC [1] LOG: database system is ready to accept connections
lemmy-ui-1 | (node:7) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
lemmy-ui-1 | (Use node --trace-deprecation ... to show where the warning was created)
lemmy-ui-1 | Lemmy-ui v0.19.3 started listening on http://0.0.0.0:1234
pictrs-1 | 2024-03-19T23:30:55.258805Z INFO actix_server::builder: starting 4 workers
pictrs-1 | 2024-03-19T23:30:55.258850Z INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime

As you see lemmy-1 doesn’t even start nor get logged

On the STDOUT (for example with tag:dev)

root@vega:/opt/lemmy/docker# docker compose up
[+] Running 4/4
  Container docker-pictrs-1    Created                                                                                                                                           0.0s 
  Container docker-postgres-1  Created                                                                                                                                           0.0s 
  Container docker-lemmy-1     Recreated                                                                                                                                         0.8s 
  Container docker-lemmy-ui-1  Recreated                                                                                                                                         0.1s 
Attaching to lemmy-1, lemmy-ui-1, pictrs-1, postgres-1
postgres-1  | 
postgres-1  | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres-1  | 
pictrs-1    | 2024-03-19T23:41:47.038498Z  INFO actix_server::builder: starting 4 workers
pictrs-1    | 2024-03-19T23:41:47.038776Z  INFO actix_server::server: Tokio runtime found; starting in existing Tokio runtime
postgres-1  | 2024-03-19 23:41:47.129 UTC [1] LOG:  starting PostgreSQL 16.2 on aarch64-unknown-linux-musl, compiled by gcc (Alpine 13.2.1_git20231014) 13.2.1 20231014, 64-bit
postgres-1  | 2024-03-19 23:41:47.130 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres-1  | 2024-03-19 23:41:47.130 UTC [1] LOG:  listening on IPv6 address "::", port 5432
postgres-1  | 2024-03-19 23:41:47.140 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres-1  | 2024-03-19 23:41:47.152 UTC [24] LOG:  database system was shut down at 2024-03-19 23:33:52 UTC
postgres-1  | 2024-03-19 23:41:47.166 UTC [1] LOG:  database system is ready to accept connections
lemmy-1 exited with code 0
lemmy-1 exited with code 139
lemmy-ui-1  | (node:7) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
lemmy-ui-1  | (Use `node --trace-deprecation ...` to show where the warning was created)
lemmy-ui-1  | Lemmy-ui v0.19.3 started listening on http://0.0.0.0:1234

Version BE >= 0.19.2

  • nutomicA
    link
    fedilink
    arrow-up
    3
    ·
    9 months ago

    Someone on in the Matrix chat tried this and didnt have any problems.

    • Cyber PingU @lemmy.cyberveins.euOP
      link
      fedilink
      arrow-up
      1
      ·
      9 months ago

      @nutomic@lemmy.ml , just for debug: I used the Dockerfile provided by ubergeek and I was not able to build up the image (with no cross compile) untill I changed ARG RUST_VERSION=1.76 into ARG RUST_VERSION=latest. This change was NOT necessary on amd64. You said your matrix user was able to run dessaline’s image flawlessly on arm64 (raspberry), but this sounds weird to me :-\

    • Cyber PingU @lemmy.cyberveins.euOP
      link
      fedilink
      arrow-up
      1
      ·
      9 months ago

      Using this image --> https://github.com/ubergeek77/lemmy-docker-multiarch

          #image: dessalines/lemmy:0.19.3
          image: ghcr.io/ubergeek77/lemmy:0.19.3  
      

      the very same docker-compose.yml works even on rpi5 (this instance I’m writing from is the one that now works even on 0.19.3 while with dessaline’s one does not). I just changed that line: there must be something in dessaline’s way of building the image that my pi doesn’t like (if on yours it works).

      • DessalinesMA
        link
        fedilink
        arrow-up
        1
        ·
        9 months ago

        This leads me to believe our arm images are broken yet again. Could you please message ubergeek and tell them to fix our docker setups? We’ve repeatedly asked people to help with our dockerfiles, and it seems the arm ones break on every release.

      • nutomicA
        link
        fedilink
        arrow-up
        1
        ·
        9 months ago

        Maybe your rpi uses an older ARM version such as ARMv6. I believe our images are built from ARM64 which requires ARMv8.