@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
Someone on in the Matrix chat tried this and didnt have any problems.
I’m running on 0.19.3 without any issues on Linux arm64. I built my own docker image though.
@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
intoARG 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 :-\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).
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.
i’m not using ansibile, I’md directly using docker compose… the same file on an amd64 platform works, while on rpi it fails :-\
Maybe your rpi uses an older ARM version such as ARMv6. I believe our images are built from ARM64 which requires ARMv8.