# Docker(Oracle VM) 시작 시 치명적 오류 발생

**URL:** https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482
**Category:** Self-hosting
**Created:** [6월 11, 2021, 4:16오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482 "2021-06-11T04:16:59Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![Meathead40](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/meathead40/32/256808_2.png) [@Meathead40](https://meta.discourse.org/u/Meathead40)
#### Post date: [6월 11, 2021, 4:16오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/1 "2021-06-11T04:16:59Z")

</div>

안녕하세요 모두 - 저는 Discourse를 처음 사용해 봅니다 (정말 멋진 것 같네요!). 일반적인 기술 지식은 어느 정도 있지만, docker/linux VM 분야에서는 아직 초보 수준이라고 생각됩니다.

무료 Oracle VM에 Oracle Linux를 설치해 두었고, 여기([https://blogs.oracle.com/developers/install-run-discourse-for-free-in-the-oracle-cloud](https://blogs.oracle.com/developers/install-run-discourse-for-free-in-the-oracle-cloud))의 단계를 완료한 후 현재 `./discourse-setup` 단계를 실행 중입니다.

아래의 오류 메시지가 지속적으로 발생하고 있습니다… `discourse doctor`를 실행해 보았지만 해결되지 않았습니다. 무엇이 문제인지 방향을 잡아 주실 수 있는 분이 계신지 궁금합니다. 미리 감사드립니다! -Tim

```plaintext
[2021-06-11T04:09:29.733935 #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, [2021-06-11T04:09:29.735773 #1] INFO -- : > sleep 5
2021-06-11 04:09:30.320 GMT [54] LOG: 0 8kB is outside the valid range for parameter "shared_buffers" (16 .. 1073741823)
2021-06-11 04:09:30.322 UTC [54] FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors
I, [2021-06-11T04:09:34.739847 #1] INFO -- : 
I, [2021-06-11T04:09:34.740097 #1] INFO -- : > su postgres -c 'createdb discourse' || true
createdb: error: could not connect to database template1: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:34.860266 #1] INFO -- : 
I, [2021-06-11T04:09:34.860745 #1] INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
psql: error: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.023423 #1] INFO -- : 
I, [2021-06-11T04:09:35.023810 #1] INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
psql: error: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.137806 #1] INFO -- : 
I, [2021-06-11T04:09:35.138325 #1] INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
psql: error: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
I, [2021-06-11T04:09:35.257190 #1] INFO -- : 
I, [2021-06-11T04:09:35.257476 #1] INFO -- : Terminating async processes

FAILED
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' failed with return #<Process::Status: pid 80 exit 2>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
14ef6216494c846091ea6ce48143e2f25018b9d2579b6d4d0021d605f7f5e145
**FAILED TO BOOTSTRAP** please scroll up and look for earlier error messages, there may be more than one.

```

---

<div class="post-metadata">

### Author: ![stefanino](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stefanino/32/224111_2.png) [@stefanino](https://meta.discourse.org/u/stefanino)
#### Post date: [8월 2, 2021, 2:41오후 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/2 "2021-08-02T14:41:46Z")

</div>

Hi @Meathead40

저도 아마 같은 문제를 겪고 있는 것 같습니다.

지난 6월에 Oracle Free에서 Discourse를 설정하는 데 성공했습니다. 그런데 방금 이메일 설정과 관련된 몇 가지 파라미터를 변경하려고 설정 스크립트를 다시 실행했는데 문제가 생겼습니다.

로그에서 추적할 수 있는 첫 번째 오류는 `FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors`인데, 제 경우 해당 파일이 존재하지 않습니다. 또한 postgresql 서비스가 실행되지 않고 있습니다(서비스로조차 사용 불가능한 상태입니다).

혹시 이 문제를 해결하셨나요? 다른 분들도 같은 현상을 겪고 계신가요?

감사합니다.  
Stef

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [8월 2, 2021, 6:13오후 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/3 "2021-08-02T18:13:55Z")

</div>

`free -m --si` 명령의 출력을 공유해 주시겠어요?

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [8월 2, 2021, 6:32오후 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/4 "2021-08-02T18:32:55Z")

</div>

> [@stefanino](#):
>
> 로그에서 추적할 수 있는 첫 번째 오류는 `FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors`입니다.  
> 하지만 제 경우에는 해당 파일이 존재하지 않습니다.

컨테이너 내부에서 확인해 보셨나요? shared\_buffers가 너무 작다는 로그 항목도 함께 보셨나요?

제 경우에는 다음과 같았습니다:

```plaintext
# /var/discourse/launcher enter app
# egrep shared_buffers /etc/postgresql/13/main/postgresql.conf
shared_buffers = 128MB
exit

```

---

<div class="post-metadata">

### Author: ![stefanino](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stefanino/32/224111_2.png) [@stefanino](https://meta.discourse.org/u/stefanino)
#### Post date: [8월 3, 2021, 7:33오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/5 "2021-08-03T07:33:10Z")

</div>

안녕하세요 @Falco, 명령어의 출력 결과는 다음과 같습니다:  
total used free shared buff/cache available  
Mem: 703 359 86 7 257 207  
Swap: 8388 246 8142

---

<div class="post-metadata">

### Author: ![stefanino](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stefanino/32/224111_2.png) [@stefanino](https://meta.discourse.org/u/stefanino)
#### Post date: [8월 3, 2021, 7:34오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/6 "2021-08-03T07:34:51Z")

</div>

안녕하세요 @Ed_S, 다음 메시지를 받고 있습니다:

```plaintext
/var/discourse/launcher enter app
Cannot connect to the docker daemon - verify it is running and you have access

```

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [8월 3, 2021, 8:37오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/7 "2021-08-03T08:37:23Z")

</div>

여기에서 동일한 파일을 확인해야 합니다:  
/var/discourse/shared/standalone/postgres\_data/postgresql.conf

이상적으로는 설정 오류가 발생했다는 로그 항목 바로 전에, 오류가 무엇인지 설명하는 줄을 볼 수 있습니다.

아래 경로에서 로그를 찾을 수 있을지도 모릅니다:  
/var/discourse/shared/standalone/log/var-log/postgres/current

---

<div class="post-metadata">

### Author: ![stefanino](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stefanino/32/224111_2.png) [@stefanino](https://meta.discourse.org/u/stefanino)
#### Post date: [8월 3, 2021, 9:06오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/8 "2021-08-03T09:06:25Z")

</div>

제안해 주셔서 감사합니다. 더 많은 정보를 수집했습니다.  
아래는 오류가 발생한 시점前后的 로그입니다 (이전 메시지들은 며칠 전 것입니다):

```plaintext
2021-08-02 13:33:16.980 UTC [2419] LOG: received smart shutdown request
2021-08-02 13:33:28.273 UTC [2419] LOG: background worker "logical replication launcher" (PID 2442) exited with exit code 1
2021-08-02 13:33:28.344 UTC [2437] LOG: shutting down
2021-08-02 13:33:28.552 UTC [2419] LOG: database system is shut down

```

또한 공유 버퍼 설정도 확인했습니다:

```plaintext
shared_buffers = 128MB # min 128kB
#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers

```

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [8월 3, 2021, 9:31오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/9 "2021-08-03T09:31:38Z")

</div>

음, 조금 돌아가서 질문할게요: 그 FATAL 에러가 나타나는 곳에서 바로 앞의 몇 줄은 어떻게 되어 있나요?

---

<div class="post-metadata">

### Author: ![stefanino](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stefanino/32/224111_2.png) [@stefanino](https://meta.discourse.org/u/stefanino)
#### Post date: [8월 3, 2021, 10:34오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/10 "2021-08-03T10:34:38Z")

</div>

네, 다시 한번 지원해 주셔서 감사합니다.

일부 구성 파라미터를 변경하기 위해 기존 설치 환경에서 설정을 실행하고 있습니다. 스크립트의 첫 번째 부분이 다음 내용을 감지했습니다:

```plaintext
sudo ./discourse-setup 
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
which: no docker.io in (/sbin:/bin:/usr/sbin:/usr/bin)
The configuration file containers/app.yml already exists!

. . . reconfiguring . . .

Saving old file as app.yml.2021-08-03-102829.bak
Stopping existing container in 5 seconds or Control-C to cancel.
+ /bin/docker stop -t 30 app
app

Found 0GB of memory and 1 physical CPU cores
setting db_shared_buffers = 0MB
setting UNICORN_WORKERS = 0
containers/app.yml memory parameters updated.

```

이어서 모든 구성 파라미터를 전달하고 마침내 빌드하는 과정으로 이어집니다… 이것이 여러분이 찾고 있는 단서가 될 것입니다.

```plaintext
2021-08-03 10:30:37.709 GMT [55] LOG: 0 8kB is outside the valid range for parameter "shared_buffers" (16 .. 1073741823)
2021-08-03 10:30:37.713 UTC [55] FATAL: configuration file "/etc/postgresql/13/main/postgresql.conf" contains errors

```

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [8월 3, 2021, 10:57오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/11 "2021-08-03T10:57:47Z")

</div>

> [@stefanino](#):
>
> `Found 0GB of memory`

좋은 징후가 아닙니다! 이 숫자는 다음 명령어의 출력에서 직접 가져와야 합니다.

```plaintext
free -g --si | awk ' /Mem:/ {print $2} '

```

> [@stefanino](#):
>
> Mem: 703 359 86 7 257 207

여기서는 703 MByte가 보고되고 있는데, 이는 (공식적으로) discourse가 원활하게 작동하기에는 너무 작은 용량입니다. 위험을 감수하고 싶고(지원도 받을 수 없으며) 만약 그렇게 하려면 다음 링크의 마법 숫자 990을 수정할 수 있습니다.

> <https://github.com/discourse/discourse_docker/blob/master/discourse-setup#L152>

더 많은 RAM이 있는 더 큰 인스턴스가 필요할 것 같습니다.

---

<div class="post-metadata">

### Author: ![stefanino](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stefanino/32/224111_2.png) [@stefanino](https://meta.discourse.org/u/stefanino)
#### Post date: [8월 3, 2021, 11:12오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/12 "2021-08-03T11:12:06Z")

</div>

네. 지금까지 인스턴스는 정상적으로 작동했고, 메모리 체크를 비활성화한 상태로 설치되어 있었습니다. 이 게시글 [Discourse won't install because I have 960MB of ram and not 1GB - Discourse System Administration - Unix Linux Community](https://community.unix.com/t/discourse-wont-install-because-i-have-960mb-of-ram-and-not-1gb/380023) 과 어떻게 관련이 있는지 모르겠네요.

설정 파일에는 여전히 체크가 비활성화되어 있지만, 덮어쓰기되는 것 같습니다? 말씀하신 대로 값을 수정해서 시도해 보고 결과를 알려드리겠습니다.

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [8월 3, 2021, 11:33오전 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/13 "2021-08-03T11:33:17Z")

</div>

> [@stefanino](#):
>
> 설정 파일에서 여전히 체크가 비활성화되어 있습니다

음, 거기서 무엇을 했는지에 따라 많이 달라집니다.

---

<div class="post-metadata">

### Author: ![stefanino](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stefanino/32/224111_2.png) [@stefanino](https://meta.discourse.org/u/stefanino)
#### Post date: [8월 3, 2021, 12:56오후 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/14 "2021-08-03T12:56:03Z")

</div>

구성 완료와 재빌드를 수행했습니다. 진행한 단계는 다음과 같습니다:

- /var/discourse/discourse-setup 파일에서 메모리 체크(#check\_disk\_and\_memory) 주석 처리 (필요한지 확실하지 않음)
- /var/discourse 폴더에서 sudo ./discourse-setup 명령 실행 (이 과정에서는 /var/discourse/containers/app.yml 파일이 생성되고 빌드가 계속 진행되려 하지만, 위에서 설명한 대로 실패함)
- app.yml 파일을 편집하여 db\_shared\_buffers: "128MB"와 UNICORN\_WORKERS: 1을 명시적으로 설정
- /var/discourse 폴더에서 sudo ./launcher rebuild app 명령으로 재빌드 실행

요구 사항의 한계 근처에 있는 것을 알고 있지만, 인스턴스가 어떻게 동작하는지 면밀히 주시할 것입니다.

지원해 주셔서 감사합니다

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [8월 3, 2021, 1:09오후 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/15 "2021-08-03T13:09:03Z")

</div>

해결되셨다니 다행입니다. 링크된 스레드와 여기서 언급된 해당 스레드를 살펴보니, ‘마법 같은 관대함(magic forgiveness)’ 값인 990을 자기 시스템에 맞는 숫자로 바꾸는 것이 훨씬 낫다고 생각합니다. '메모리 체크 비활성화’는 오히려 문제를 일으키고 있거든요.

제 생각에는 Discourse 팀이 지원되는 구성과 지원되지 않는 구성 사이에 선을 긋기 위해 어떤 값의 하한선을 설정해야 하는데, 이를 공식적으로 1G로 정하고 990으로 완화한 것 같습니다. 하지만 960은 990에 꽤 가깝고, 비슷한 이유로 발생하는 값이라 생각합니다. 반면 703은 꽤 큰 차이가 있죠!

---

<div class="post-metadata">

### Author: ![stefanino](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stefanino/32/224111_2.png) [@stefanino](https://meta.discourse.org/u/stefanino)
#### Post date: [8월 3, 2021, 2:41오후 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/16 "2021-08-03T14:41:57Z")

</div>

에드, 안녕하세요.  
숫자를 변경하는 데 동의합니다. 메모리가 이렇게 낮은 것에 대해 꽤 놀랐습니다. Oracle(무료 플랜) 인스턴스 사양에는 1GB의 메모리가 표시되는데, 실제 무료 환경에서는 약 60~70% 정도만 사용 가능한 것 같습니다. 이유를 모르겠어서 조금 혼란스럽습니다.

---

<div class="post-metadata">

### Author: ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)
#### Post date: [8월 3, 2021, 2:59오후 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/17 "2021-08-03T14:59:00Z")

</div>

이전에 언급된 바와 같습니다 - Oracle이 1GB보다 훨씬 적은 용량을 제공하면서 설명 시 이를 1GB로 반올림하고 있는 것 같습니다:

> [@jericson](#):
>
> 이것을 시도해 봤고, 오래된 격언이 사실임을 깨달았습니다: 돈을 낸 만큼만 얻습니다.
> 
> > [@ddf](#):
> >
> > 하지만 CLI에서 확인한 것은 1GB가 아닙니다… 이유를 모르겠습니다.
> 
> 기본 이미지는 Oracle Linux이며, 이는 광고된 대로 1GB가 아닙니다.

수정: [링크된 블로그](https://jlericson.com/2021/04/06/oracle_discourse.html)를 확인하세요:

> 아마도 가장 중요한 누락된 지침은 **기본 서버 이미지를 사용하지 말 것** 입니다. Discourse는 1GB의 RAM(또는 [그 정도](https://github.com/discourse/discourse/pull/7368))가 필요하지만, Oracle Linux 이미지는 왜 그런지 모르게 충분한 메모리를 남기지 않습니다. CentOS가 작동할지는 모르겠지만, Ubuntu 이미지는 문제없습니다. “Minimal” 설치 대신 전체 설치[2](https://jlericson.com/2021/04/06/oracle_discourse.html#fn2)를 선택하는 것을 꼭 확인하세요.

---

<div class="post-metadata">

### Author: ![jericson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jericson/32/116215_2.png) [@jericson](https://meta.discourse.org/u/jericson)
#### Post date: [8월 3, 2021, 6:41오후 UTC](https://meta.discourse.org/t/fatal-error-when-trying-to-start-docker-oracle-vm/193482/18 "2021-08-03T18:41:34Z")

</div>

기본 Oracle Linux에는 Discourse 설치에 필요하지 않은 여러 가지가 포함되어 있을 것 같습니다. 아마도 주요 사용 사례가 Oracle 데이터베이스 서버 호스팅일 테니까요. 😉 다행히도 Ubuntu 이미지는 잘 작동합니다. 제 [테스트 사이트/댓글 호스트](https://discourse.jlericson.com/)도 여전히 실행 중입니다. (다만, 활동은 많지 않습니다.)
