인프런 커뮤니티 질문&답변

별다방님의 프로필 이미지

작성한 질문수

개발자를 위한 쉬운 도커

Leafy 애플리케이션 구성

leafy 애플리케이션 구성 강의중 db 문제

해결된 질문

24.01.21 12:12 작성

·

555

1

안녕하세요, 강의 잘 수강하고 있습니다.

강의중 db를 실행시키고 10분이자나도 ready가 안 된다면

어떠한 문제가 있는 건가요?

두세번 반복해서 실행해도 올라오지 않습니다.

답변 3

1

데브위키님의 프로필 이미지
데브위키
지식공유자

2024. 01. 21. 23:54

로그가 바로 출력되도록 devwikirepo/leafy-postgres:1.0.0 이미지와 leafy 소스코드의 내용을 수정했습니다!

 

DB서버의 상태는 정상이기 때문에 그대로 실습을 진행해주셔도 되십니다.

하지만 혹시 기존에 컨테이너를 수정해서 실행해보고 싶으실 경우 아래 방법대로 진행해 주시면 됩니다!

 

기존에 실행되던 leafy-postgres 컨테이너를 새로운 컨테이너로 대체 하는 방법:

  1. 기존 이미지 삭제

     

    $ docker image rm -f devwikirepo/leafy-postgres:1.0.0 
  2. leafy-postgres 삭제 및 재실행

$ docker rm -f leafy-postgres
$ docker run -d --name leafy-postgres -p 5432:5432 devwikirepo/leafy-postgres:1.0.0

아래와 같이 로그가 바로 출력되는 것으로 수정했습니다.

image

 

1

유재식님의 프로필 이미지

2024. 01. 21. 23:00

2024-01-21 13:29:43.037 GMT [1] LOG:  redirecting log output to logging collector process
2024-01-21 13:29:43.037 GMT [1] HINT:  Future log output will appear in directory "pg_log".

저도 여기서 멈춘줄 알았는데 postgresql 같은 경우 로깅 디렉토리가 설정되어 있어 출력이 되지 않는 것 같습니다?!

> docker exec -it leafy-postgres tail -50f /var/lib/postgresql/data/pg_log/postgresql-Sun.log

2024-01-21 13:29:42.549 GMT [49] LOG:  starting PostgreSQL 13.13 (Debian 13.13-1.pgdg120+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-01-21 13:29:42.552 GMT [49] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-01-21 13:29:42.563 GMT [51] LOG:  database system was shut down at 2024-01-21 13:29:42 GMT
2024-01-21 13:29:42.579 GMT [49] LOG:  database system is ready to accept connections
2024-01-21 13:29:42.904 GMT [49] LOG:  received fast shutdown request
2024-01-21 13:29:42.905 GMT [49] LOG:  aborting any active transactions
2024-01-21 13:29:42.911 GMT [49] LOG:  background worker "logical replication launcher" (PID 57) exited with exit code 1
2024-01-21 13:29:42.911 GMT [52] LOG:  shutting down
2024-01-21 13:29:42.948 GMT [49] LOG:  database system is shut down
2024-01-21 13:29:43.037 GMT [1] LOG:  starting PostgreSQL 13.13 (Debian 13.13-1.pgdg120+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-01-21 13:29:43.037 GMT [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-01-21 13:29:43.037 GMT [1] LOG:  listening on IPv6 address "::", port 5432
2024-01-21 13:29:43.040 GMT [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-01-21 13:29:43.046 GMT [68] LOG:  database system was shut down at 2024-01-21 13:29:42 GMT
2024-01-21 13:29:43.052 GMT [1] LOG:  database system is ready to accept connections
2024-01-21 13:54:44.406 GMT [1] LOG:  received fast shutdown request
2024-01-21 13:54:44.410 GMT [1] LOG:  aborting any active transactions
2024-01-21 13:54:44.416 GMT [1] LOG:  background worker "logical replication launcher" (PID 74) exited with exit code 1
2024-01-21 13:54:44.420 GMT [69] LOG:  shutting down
2024-01-21 13:54:44.489 GMT [1] LOG:  database system is shut down
2024-01-21 13:54:44.990 GMT [1] LOG:  starting PostgreSQL 13.13 (Debian 13.13-1.pgdg120+1) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-01-21 13:54:44.990 GMT [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-01-21 13:54:44.990 GMT [1] LOG:  listening on IPv6 address "::", port 5432
2024-01-21 13:54:44.992 GMT [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-01-21 13:54:44.995 GMT [28] LOG:  database system was shut down at 2024-01-21 13:54:44 GMT
2024-01-21 13:54:45.001 GMT [1] LOG:  database system is ready to accept connection

이런 경우 docker logs 에 출력을 위해선 어떤 설정이 추가적으로 필요할까요?

별다방님의 프로필 이미지
별다방
질문자

2024. 01. 21. 23:16

오.... 그러네요

다시 해보니깐 실행이 잘 되고 있는 상태네요 ㅋㅋ

감사합니다!

데브위키님의 프로필 이미지
데브위키
지식공유자

2024. 01. 21. 23:25

아하 그렇군요, 답변 감사합니다. 일단 DB서버는 정상적으로 실행된 것으로 보입니다.

보통은 아래처럼 init.sql 이 실행되었다는 로그까지 나타나야 하지만 아래 2줄만 보이는 상태인 것 같습니다.

image

맨 아래줄의 Future logs output will appear in directory "pg_log" 문구는 postgres서버가 정상적으로 실행 되었고, 이후 발생하는 로그를 pg_log 디렉터리에 파일로 저장하겠다는 것을 의미합니다.

정상으로 실행된 상태이지만 컨테이너에서 로그를 파일로 저장하는 것은 좋은 방법이 아닙니다. 컨테이너가 재생성되거나 버전이 바뀌면 컨테이너 레이어가 모두 제거되기 때문입니다.(이 부분은 섹션 7에서 자세하게 말씀 드리겠습니다!) 

제가 leafy-postgres 이미지를 빌드할 때 실수가 있었네요. 이 부분은 혼동을 드리지 않도록 docker logs 명령으로 실시간 로그로 출력되는 것으로 수정하겠습니다. 좋은 부분 알려주셔서 감사합니다 ! 👍

0

데브위키님의 프로필 이미지
데브위키
지식공유자

2024. 01. 21. 12:52

덴고님 안녕하세요, 데브위키입니다.

먼저 문제를 확인해보기 위해서는 컨테이너의 현재 상태와 로그를 확인해 보아야 할 것 같습니다.

 

아래의 명령어 실행 결과가 어떻게 나오는지 스크린샷으로 확인해주실 수 있으실까요?

  1. 컨테이너의 상태 확인

$ docker ps -a

 

  1. 컨테이너의 로그 확인

$ docker logs leafy-postgres

 

별다방님의 프로필 이미지
별다방
질문자

2024. 01. 21. 23:17

윗분의 도움으로 해결했습니다

실행은 되고 있었습니다

다만, 제가 로그의 위치를 파악을 못 한것 같습니다

감사합니다.