여기서도 동일한 증상이 나타납니다. 워커(worker)에서 에러가 발생해서 재시작을 시도했는데… 크래시가 났습니다… 재빌드를 시도해 봤더니 지금은 계속 크래시 상태입니다.
/var/discourse# ./launcher rebuild app
x86_64 arch detected.
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
2.0.20240825-0027: Pulling from discourse/base
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Status: Image is up to date for discourse/base:2.0.20240825-0027
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2024-08-27T21:43:42.091270 #1] INFO -- : Reading from stdin
I, [2024-08-27T21:43:42.110405 #1] INFO -- : File > /etc/service/postgres/run chmod: +x chown:
I, [2024-08-27T21:43:42.117678 #1] INFO -- : File > /etc/service/postgres/log/run chmod: +x chown:
I, [2024-08-27T21:43:42.125472 #1] INFO -- : File > /etc/runit/3.d/99-postgres chmod: +x chown:
I, [2024-08-27T21:43:42.132700 #1] INFO -- : File > /root/install_postgres chmod: +x chown:
I, [2024-08-27T21:43:42.139622 #1] INFO -- : File > /root/upgrade_postgres chmod: +x chown:
I, [2024-08-27T21:43:42.140454 #1] INFO -- : Replacing data_directory = '/var/lib/postgresql/13/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.141762 #1] INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.142675 #1] INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.143534 #1] INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.144382 #1] INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.144912 #1] INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.145541 #1] INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.146355 #1] INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.146979 #1] INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/13/main/postgresql.conf
I, [2024-08-27T21:43:42.147851 #1] INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres peer in /etc/postgresql/13/main/pg_hba.conf
I, [2024-08-27T21:43:42.148557 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-08-27T21:43:42.149423 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-08-27T21:43:42.149931 #1] INFO -- : > if [ -f /root/install_postgres ]; then
/root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi
2024/08/27 21:43:42 socat[28] E connect(, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Connection refused
I, [2024-08-27T21:43:42.217004 #1] INFO -- : Generating locales (this might take a while)...
Generation complete.
I, [2024-08-27T21:43:42.217327 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2024-08-27T21:43:42.220344 #1] INFO -- : Terminating async processes
2024-08-27 21:43:42.300 UTC [30] LOG: starting PostgreSQL 13.16 (Debian 13.16-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-08-27 21:43:42.300 UTC [30] LOG: listening on IPv4 address "0.0.0.0", port 5432
2024-08-27 21:43:42.300 UTC [30] LOG: listening on IPv6 address "::", port 5432
2024-08-27 21:43:42.303 UTC [30] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-08-27 21:43:42.310 UTC [31] LOG: database system was interrupted; last known up at 2024-08-27 21:41:14 UTC
2024-08-27 21:43:42.503 UTC [31] LOG: database system was not properly shut down; automatic recovery in progress
2024-08-27 21:43:42.507 UTC [31] LOG: redo starts at 38C/55C02EA0
2024-08-27 21:43:42.507 UTC [31] LOG: invalid record length at 38C/55C02ED8: wanted 24, got 0
2024-08-27 21:43:42.507 UTC [31] LOG: redo done at 38C/55C02EA0
2024-08-27 21:43:42.540 UTC [30] LOG: database system is ready to accept connections
그냥 무한정 멈춰 있습니다… 컨테이너에 포트가 할당되지도 않고, 레일스 앱이 시작되지도 않으며, 제 생각에는 아무것도 진행되지 않는 것 같습니다.
아니요… ./launcher rebuild app 명령이 생성하는 좀비 컨테이너가 존재하며, 위에서 언급한 출력이 발생합니다. 이 컨테이너의 모습은 다음과 같습니다. discourse base 이미지에서 빌드를 시작하지만, 위에서 말했듯이 멈춰 버립니다. discourse 앱으로 등록되지 않습니다.
/var/discourse# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02ae320b72a0 discourse/base:2.0.20240825-0027 "/bin/bash -c '/usr/…" 7 minutes ago Up 7 minutes sleepy_driscoll
./launcher start app을 실행하면 새 앱을 시작하려고 시도하지만, 좀비 컨테이너에서 PSQL이 5432 포트에서 실행 중이므로 오류가 발생합니다. 좀비 컨테이너(및/또는 이미지)를 삭제하면 새 컨테이너가 생성되지만, 이전 게시물에서와 동일한 로그로 다시 멈춰 버립니다.
정말 스트레스가 많고 불행한 상황입니다. 어떻게 이런 상태가 되었는지 알 수 없습니다. app.yaml에서 모든 플러그인을 비활성화하고 다시 빌드해 보았습니다.
2024-08-27 21:43:42.300 UTC [30] LOG: starting PostgreSQL 13.16 (Debian 13.16-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-08-27 21:43:42.300 UTC [30] LOG: listening on IPv4 address "0.0.0.0", port 5432
2024-08-27 21:43:42.300 UTC [30] LOG: listening on IPv6 address "::", port 5432
2024-08-27 21:43:42.303 UTC [30] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-08-27 21:43:42.310 UTC [31] LOG: database system was interrupted; last known up at 2024-08-27 21:41:14 UTC
2024-08-27 21:43:42.503 UTC [31] LOG: database system was not properly shut down; automatic recovery in progress
2024-08-27 21:43:42.507 UTC [31] LOG: redo starts at 38C/55C02EA0
2024-08-27 21:43:42.507 UTC [31] LOG: invalid record length at 38C/55C02ED8: wanted 24, got 0
2024-08-27 21:43:42.507 UTC [31] LOG: redo done at 38C/55C02EA0
2024-08-27 21:43:42.540 UTC [30] LOG: database system is ready to accept connections
여기서 영원히 멈춰버립니다… 에셋이 컴파일되지도 않고, rails 앱이 시작되지도 않으며, redis도 시작되지 않습니다.