작은 규모의 포럼(500MB 백업)을 운영 중인데, 50GB 디스크에서 공간 부족으로 인해 ./launcher rebuild 실행이 실패하고 있습니다. 다른 정리 방법을 알아보다가 (apt autoremove와 ./launcher cleanup는 아무것도 정리하지 못했습니다) /var/lib/docker/overlay2/.../merged/var/www/discourse/public/assets/locales에 수백 MB에 달하는 쓸모없는 로케일이 여러 개 있는 것을 발견했습니다.
불행히도 스크린샷을 찍기 전에 삭제를 시작해서 이미 일부가 지워진 상태이지만, 여전히 동일한 언어에 대해 중복된 것으로 보이는 컴파일된 JS 파일이 많이 남아 있는 것을 볼 수 있습니다. Discourse 코드에서 이를 방지할 수 있는 방법이 있을까요? .map 파일은 어떤 용도로 사용되나요?
그리고 제 포럼은 영어만 사용하고 있습니다. 다른 모든 언어를 제외하는 방법은 무엇일까요?
명령어를 실행했는데 로케일 관련 오류가 발생했고, 이제 출력 내용이 FATAL: database files are incompatible with server. The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.12(데이터베이스 파일이 서버와 호환되지 않습니다. 데이터 디렉토리는 이 버전 15.12와 호환되지 않는 PostgreSQL 버전 13으로 초기화되었습니다)에서 멈춰 있습니다.
실수로 중요한 로케일 파일을 삭제한 걸까요? en_US.UTF-8은 성공적으로 재생성된 것 같습니다.
# uname -a
Linux localhost 4.4.0-266-generic #300-Ubuntu SMP Mon Feb 17 19:45:09 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
root@localhost:/var/discourse# docker rmi -f $(docker images -aq)
Untagged: discourse/base:2.0.20250226-0128
Untagged: discourse/base@sha256:6f18aa2cd22bba0deb91d69194e577d4f96130ad555ae8ec646a8792cbfe37db
Deleted: sha256:557b1ff6168ad5bc1d1d80c6eaf6c10459780536cc281d020194a60aba9d833e
Untagged: local_discourse/app:latest
Deleted: sha256:06d986a896b239daabb5ed5ba64f70cb55ba53dc58e8c5147c19068378a2252d
Deleted: sha256:5f2aa2694b8b8e8ee8ac1a43dcf9d804ef9db3da11fc78027520c043408cc575
Error: No such image: 5f2aa2694b8b
root@localhost:/var/discourse# ./launcher rebuild app
WARNING: Docker version 20.10.7 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.
WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed
Please be patient
2.0.20250226-0128: Pulling from discourse/base
af302e5c37e9: Already exists
ed49ab5c933d: Already exists
4d13d450f300: Already exists
[...]
bc6c17ae1969: Already exists
d19f089ead0e: Already exists
Digest: sha256:6f18aa2cd22bba0deb91d69194e577d4f96130ad555ae8ec646a8792cbfe37db
Status: Downloaded newer image for discourse/base:2.0.20250226-0128
docker.io/discourse/base:2.0.20250226-0128
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
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20250226-0128: Pulling from discourse/base
Digest: sha256:6f18aa2cd22bba0deb91d69194e577d4f96130ad555ae8ec646a8792cbfe37db
Status: Image is up to date for discourse/base:2.0.20250226-0128
docker.io/discourse/base:2.0.20250226-0128
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2025-04-03T17:28:37.320187 #1] INFO -- : Reading from stdin
I, [2025-04-03T17:28:37.358715 #1] INFO -- : File > /etc/service/postgres/run chmod: +x chown:
I, [2025-04-03T17:28:37.369442 #1] INFO -- : File > /etc/service/postgres/log/run chmod: +x chown:
I, [2025-04-03T17:28:37.376162 #1] INFO -- : File > /etc/runit/3.d/99-postgres chmod: +x chown:
I, [2025-04-03T17:28:37.381934 #1] INFO -- : File > /root/install_postgres chmod: +x chown:
I, [2025-04-03T17:28:37.386982 #1] INFO -- : File > /root/upgrade_postgres chmod: +x chown:
I, [2025-04-03T17:28:37.389829 #1] INFO -- : Replacing data_directory = '/var/lib/postgresql/15/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/15/main/postgresql.conf
I, [2025-04-03T17:28:37.391604 #1] INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/15/main/postgresql.conf
I, [2025-04-03T17:28:37.398346 #1] INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/15/main/postgresql.conf
I, [2025-04-03T17:28:37.399876 #1] INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/15/main/postgresql.conf
I, [2025-04-03T17:28:37.401239 #1] INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/15/main/postgresql.conf
I, [2025-04-03T17:28:37.402470 #1] INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/15/main/postgresql.conf
I, [2025-04-03T17:28:37.403467 #1] INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/15/main/postgresql.conf
I, [2025-04-03T17:28:37.404421 #1] INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/15/main/postgresql.conf
I, [2025-04-03T17:28:37.405408 #1] INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/15/main/postgresql.conf
I, [2025-04-03T17:28:37.406950 #1] INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres peer in /etc/postgresql/15/main/pg_hba.conf
I, [2025-04-03T17:28:37.407960 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-04-03T17:28:37.408886 #1] INFO -- : Replacing (?-mix:^host.*all.*all.*::1\/128.*$) with host all all ::/0 md5 in /etc/postgresql/15/main/pg_hba.conf
I, [2025-04-03T17:28:37.409731 #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
failed to set locale!
[error] character map file `UTF-8' not found: No such file or directory
failed to set locale!
[error] default character map file `ANSI_X3.4-1968' not found: No such file or directory
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "en_US.UTF-8",
LC_ALL = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
popen failure: Cannot allocate memory
initdb: error: program "postgres" is needed by initdb but was not found in the same directory as "/usr/lib/postgresql/15/bin/initdb"
I, [2025-04-03T17:28:38.987799 #1] INFO -- : Generating locales (this might take a while)...
en_US.UTF-8... done
Generation complete.
Upgrading PostgreSQL from version 13 to 15
I, [2025-04-03T17:28:38.988959 #1] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main
I, [2025-04-03T17:28:38.991509 #1] INFO -- : Terminating async processes
2025-04-03 17:28:39.091 UTC [51] FATAL: database files are incompatible with server
2025-04-03 17:28:39.091 UTC [51] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.12 (Debian 15.12-1.pgdg120+1).
^C^C^C
Ubuntu 16(알고 있습니다)에서 18로 인플레이스 업그레이드를 수행하고, /var/discourse/containers/app.yml 파일에 세 가지 로케일 환경 변수 설정을 추가했으며, 이제 PostgreSQL v13 마이그레이션이 성공적으로 완료되었고 최신 버전의 Discourse가 Ubuntu 18에서 정상적으로 실행되고 있습니다.