Discourse_docker: 부트스트래핑 문제

Docker를 사용하여 온프레미스 환경에서 Discourse를 배포하는 방법을 배우고 있습니다. 이 프로젝트를 참고/사용하고 있습니다. 해당 프로젝트에서 "Issues"를 찾을 수 없어서 여기에 질문합니다.

저는 Ansible을 통해 전체 스택을 배포하는 Packer 프로젝트를 작업하고 있으며, 현재 대상 머신은 작은 로컬 Debian 12 VM입니다 (docker-ce 28.2.2).

app.yml은 저장소의 기본 설정과 거의 동일합니다. 컨테이너에 라벨을 추가(traefik 통합)하는 것 외에는 큰 차이가 없습니다. 동일한 app.yml은 다른 Debian 서버에서는 정상적으로 빌드되었습니다.

문제는 ./launcher bootstrap app 실행 시 발생합니다:

From https://github.com/discourse/discourse
 * branch              tests-passed -> FETCH_HEAD
 * [new branch]        tests-passed -> origin/tests-passed
I, [2025-06-19T15:01:57.466297 #1]  INFO -- : 
I, [2025-06-19T15:01:57.466503 #1]  INFO -- : > cd /var/www/discourse && git checkout tests-passed
Switched to a new branch 'tests-passed'
I, [2025-06-19T15:02:00.166283 #1]  INFO -- : Branch 'tests-passed' set up to track remote branch 'tests-passed' from 'origin'.

I, [2025-06-19T15:02:00.166430 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp
I, [2025-06-19T15:02:00.173066 #1]  INFO -- : 
I, [2025-06-19T15:02:00.173236 #1]  INFO -- : > cd /var/www/discourse && chown discourse:www-data tmp
I, [2025-06-19T15:02:00.178867 #1]  INFO -- : 
I, [2025-06-19T15:02:00.178989 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2025-06-19T15:02:00.183569 #1]  INFO -- : 
I, [2025-06-19T15:02:00.183662 #1]  INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2025-06-19T15:02:00.189147 #1]  INFO -- : 
I, [2025-06-19T15:02:00.189258 #1]  INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2025-06-19T15:02:00.195217 #1]  INFO -- : 
I, [2025-06-19T15:02:00.195305 #1]  INFO -- : > cd /var/www/discourse && mkdir -p                    /shared/log/rails
I, [2025-06-19T15:02:00.200411 #1]  INFO -- : 
I, [2025-06-19T15:02:00.200507 #1]  INFO -- : > cd /var/www/discourse && bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
I, [2025-06-19T15:02:00.208619 #1]  INFO -- : 
I, [2025-06-19T15:02:00.208771 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log /var/www/discourse/log"
I, [2025-06-19T15:02:00.215673 #1]  INFO -- : 
I, [2025-06-19T15:02:00.215824 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/{uploads,backups}"
I, [2025-06-19T15:02:00.222167 #1]  INFO -- : 
I, [2025-06-19T15:02:00.222270 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/{uploads,backups} /var/www/discourse/public"
I, [2025-06-19T15:02:00.229600 #1]  INFO -- : 
I, [2025-06-19T15:02:00.229707 #1]  INFO -- : > cd /var/www/discourse && bash -c "mkdir -p           /shared/tmp/{backups,restores}"
I, [2025-06-19T15:02:00.236308 #1]  INFO -- : 
I, [2025-06-19T15:02:00.236383 #1]  INFO -- : > cd /var/www/discourse && bash -c "ln    -s           /shared/tmp/{backups,restores} /var/www/discourse/tmp"
I, [2025-06-19T15:02:00.243571 #1]  INFO -- : 
I, [2025-06-19T15:02:00.243892 #1]  INFO -- : > cd /var/www/discourse && chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp
I, [2025-06-19T15:02:00.249403 #1]  INFO -- : 
I, [2025-06-19T15:02:00.249501 #1]  INFO -- : > cd /var/www/discourse && find public/plugins/ -maxdepth 1 -xtype l -delete
I, [2025-06-19T15:02:00.258481 #1]  INFO -- : 
I, [2025-06-19T15:02:00.258881 #1]  INFO -- : Replacing # redis with sv start redis || exit 1 in /etc/service/unicorn/run
I, [2025-06-19T15:02:00.259572 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2025-06-19T15:02:02.757529 #1]  INFO -- : 
I, [2025-06-19T15:02:02.757835 #1]  INFO -- : > cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
I, [2025-06-19T15:02:02.764975 #1]  INFO -- : 
I, [2025-06-19T15:02:02.765341 #1]  INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2025-06-19T15:02:02.771575 #1]  INFO -- : 
I, [2025-06-19T15:02:02.771778 #1]  INFO -- : > mkdir -p /var/nginx/cache
I, [2025-06-19T15:02:02.775586 #1]  INFO -- : 
I, [2025-06-19T15:02:02.776449 #1]  INFO -- : Replacing pid /run/nginx.pid; with daemon off; in /etc/nginx/nginx.conf
I, [2025-06-19T15:02:02.776770 #1]  INFO -- : Replacing (?m-ix:upstream[^\}]+\}) with upstream discourse { server 127.0.0.1:3000; } in /etc/nginx/conf.d/discourse.conf
I, [2025-06-19T15:02:02.777222 #1]  INFO -- : Replacing (?-mix:server_name.+$) with server_name _ ; in /etc/nginx/conf.d/discourse.conf
I, [2025-06-19T15:02:02.777470 #1]  INFO -- : Replacing (?-mix:client_max_body_size.+$) with client_max_body_size $upload_size ; in /etc/nginx/conf.d/discourse.conf
I, [2025-06-19T15:02:02.777812 #1]  INFO -- : > echo "done configuring web"
I, [2025-06-19T15:02:02.781599 #1]  INFO -- : done configuring web

I, [2025-06-19T15:02:02.781828 #1]  INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
ERROR:  Error installing bundler:
	bundler-2.6.4 requires Ruby version >= 3.1.0. The current ruby version is 2.7.2.137.
I, [2025-06-19T15:02:03.280749 #1]  INFO -- : 
I, [2025-06-19T15:02:03.281100 #1]  INFO -- : Terminating async processes
I, [2025-06-19T15:02:03.281175 #1]  INFO -- : Sending INT to 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 pid: 60
I, [2025-06-19T15:02:03.281235 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 177
177:signal-handler (1750345323) Received SIGTERM scheduling shutdown...
2025-06-19 15:02:03.281 UTC [60] LOG:  received fast shutdown request
2025-06-19 15:02:03.309 UTC [60] LOG:  aborting any active transactions
2025-06-19 15:02:03.311 UTC [60] LOG:  background worker "logical replication launcher" (PID 69) exited with exit code 1
2025-06-19 15:02:03.312 UTC [64] LOG:  shutting down
177:M 19 Jun 2025 15:02:03.324 # User requested shutdown...
177:M 19 Jun 2025 15:02:03.324 * Saving the final RDB snapshot before exiting.
177:M 19 Jun 2025 15:02:03.347 * DB saved on disk
177:M 19 Jun 2025 15:02:03.347 # Redis is now ready to exit, bye bye...
2025-06-19 15:02:03.493 UTC [60] LOG:  database system is shut down


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) failed with return #<Process::Status: pid 315 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\"\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}
3539ee62a81cc2a309d4bfcf4fc6049bd70749d8f7c87bd2bf634eaf33fa4b7b
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

이를 수정하는 방법에 대한 힌트가 있을까요? 도움이 감사하겠습니다 …

Stefan 드림

수정: RAM을 8GB로 늘렸지만 상황이 바뀌지 않았습니다.

로컬 VM에 인터넷 전체 액세스와 HTTPS가 지원되나요?

일반적인 로컬 설치 방법은 #dev-install입니다.

그렇지 않은 경우, 프로덕션에는 표준 설치 방법을 사용하세요.

VM은 완전히 온라인 상태입니다. 다만 아직 작동하는 FQDN, DNS 레코드, 정적 IP를 통해 외부에서 접근할 수는 없습니다. 부트스트래핑에 이것이 중요한지 궁금합니다(중요하지 않을 것이라고 가정했습니다).

이 라인에서 실패합니다.

이것은 도커 호스트에 discourse 사용자가 존재하지 않는 사실과 관련이 있는 것일까요? … 어쩌면 … ? 아니면 discourse 컨테이너 내부의 문제일까요?

완전히 다른 호스트에서도 동일한 오류가 발생합니다.

이 호스트는 서버를 가리키는 작동 중인 FQDN이 설정되어 있습니다.

OK, 해결했습니다. somehow git checkout가 제대로 가져오지 못해서, 이미지와 설정의 이상한 오래된 조합을 사용하고 있었습니다.

다시 가져오고 처음부터 다시 시작합니다. 이제 진행할 수 있을 것 같습니다. 감사합니다.

수정: 이전 git-checkout이 main이 아닌 master 브랜치에서 온 것 같습니다. 그래서 꽤 오래된 버전이었네요.

이제 잘 작동합니다: traefik 뒤에서 discourse를 실행하는 것, 좋습니다.