Docker Joplin 설치 질문
안녕하세요.
서버포럼에서 docker joplin 설치 글을 보고 컴포즈 파일을 작성했는데 잘 진행이 되다가
log 에
2024-01-12 13:57:57 13:57:57 0|app | 2024-01-12 13:57:57: db: Could not connect. Will try again. getaddrinfo ENOTFOUND joplin_db
라는 메세지가 반복되며 실행되지 않아요.
DB를 보면
2024-01-12 14:06:42.461 KST [1] LOG: starting PostgreSQL 15.5 (Debian 15.5-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit 2024-01-12 14:06:42.462 KST [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 2024-01-12 14:06:42.462 KST [1] LOG: listening on IPv6 address "::", port 5432 2024-01-12 14:06:42.463 KST [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2024-01-12 14:06:42.465 KST [63] LOG: database system was shut down at 2024-01-12 14:06:42 KST 2024-01-12 14:06:42.468 KST [1] LOG: database system is ready to accept connections
올라온것 같은데요.
설정 잘못된 부분이 있는지 봐주심 감사하겠습니다..
좋은답변을 받기위해서는 좋은 질문이 필요합니다.
유의할점⚠️
- 예의를 지켜주세요. 답변자는 답변을 할 의무는 없습니다.
- 질문에 대한 대부분의 답은 검색으로 찾아보실 수 있습니다.
- 답변자가 답변을 하면서 대개 많은 경우는 다시 질문을 하는 경우가 많이 있습니다.
- (질문의 대한 정보가 부족합니다. ~일 경우 결과물이 어떻게 됩니까? 등등)
질문방법🙏
자신의 상황을 최대한 자세히 설명해주세요.
상황이 정확하고 많을 수록 답변의 정확도가 올라갑니다.
ex) ex) 헤놀로지라면 메인보드 모델 칩셋정보, CPU, 사용한 DSM 버전, 모델, 부수적인 추가 컨트롤러 나 랜카드 등과 어떠한 로더의 이미지를 사용했는지.(arpl-i18n, mshell), 어떤 버전을 사용했는지, 문제가있다면 어떠한것인지 스크린샷을 동반하고 에러의 경우 에러로그를 출력해서 주시면 좋습니다.
*가능하면 최신버전 OS/SW를 이용해주세요
답변에대한 피드백을 주세요.
정보가 질문에 모두 담겨있지않다면 대부분의 답변이 다른정보를 요구합니다.
이러한 답변에 대해 명확한 피드백을 주시면 도움이 됩니다.
stack내 컨테이너들의 네트워크 모드가 각각 달라서 연결이 안되는 걸로 보이네요.
1. joplin_db → network_mode: bridge
2. app → network_mode: host
각 컨테이너의 네트워크 모드 구문 라인을 삭제하시면 joplin_default로 묶이면서 app에서 db 연결이 가능해질겁니다. 저도 joplin docker-compose.yml에서 네트워크 모드 구문을 포함하지 않았습니다.
그리고 포트 또한 postgresSQL을 joplin 외의 다른 컨테이너에서 사용하거나 외부에서 직접 접속하실 필요가 없으면 joplin_db쪽의 포트를 굳이 다른 포트로 하지 마시고 그냥 "5432:5432" 으로 같이 일치시키거나 아예 port 정의하는 구문 자체를 삭제하세요(PostgreSQL docker image의 기본 포트가 5432로 되어있기 때문에 별도로 정의하지 않아도 됩니다).
위에 말씀드린 내용을 기반으로 docker-compose.yml을 수정해보면...
version: '3'
services:
joplin_db:
image: postgres:15.5
container_name: joplin_db
volumes:
- /volume8/docker/joplin/postgresdata:/var/lib/postgresql/data
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=joplin
- POSTGRES_USER=joplin
- POSTGRES_DB=joplin
- TZ=Asia/Seoul
app:
image: joplin/server:latest
container_name: joplin
depends_on:
- joplin_db
ports:
- "22300:22300"
restart: unless-stopped
environment:
- APP_PORT=22300
- APP_BASE_URL=https://joplin.sangsangbee.com
- DB_CLIENT=pg
- POSTGRES_PASSWORD=joplin
- POSTGRES_DATABASE=joplin
- POSTGRES_USER=joplin
- POSTGRES_PORT=5432
- POSTGRES_HOST=192.168.219.150
- TZ=Asia/Seoul
- MAX_TIME_DRIFT=0
이렇게 되고, 혹시 참고되실 수 있으니 제가 오라클 클라우드에서 deploy해서 사용하는 docker-compose.yml도 같이 올려드립니다.
version: '3'
services:
app:
environment:
- APP_BASE_URL=https://note.tyon.pro
- APP_PORT=22300
- POSTGRES_PASSWORD=joplin
- POSTGRES_DATABASE=joplin
- POSTGRES_USER=joplin
- POSTGRES_PORT=5432
- POSTGRES_HOST=db
- DB_CLIENT=pg
restart: unless-stopped
image: florider89/joplin-server:latest
ports:
- "22300:22300"
db:
restart: unless-stopped
image: postgres:13.1
ports:
- "5432:5432"
volumes:
- ./joplin-data:/var/lib/postgresql/data
- ./joplin-server:/home/joplin/packages/server
environment:
- POSTGRES_PASSWORD=joplin
- POSTGRES_USER=joplin
- POSTGRES_DB=joplin
network mode host는 새 네트워크를 만들지 않고 컨테이너의 네트워크를 현 호스트로 사용 하겠다는 뜻으로
ports를 전부 주석처리 해주셔야 합니다.(포트포워딩)
해당 컨테이너의 prot는 defualt를 사용하게 될 것입니다.
joplin_db의 port는 고의 적으로 다르게 사용하는 거죠?
https://psychoria.tistory.com/784 참조
npm역방향 https://joplin.xxx.duckdns.org 이런식으로요
docker run 으로 설치하는게 깔끔합니다 포테이너설치보다요
제가 수정한건 db에 노출되있는 포트를 지우고 (db과 app의 내부통신 가능), POSTGRESS_HOST를 ip가 아닌 같은 도커 섭넷 이용시 사용가능한 호스트네임을 이용해 joplin_db를 지정해주었습니다. 잘됩니다 :) 아래 코드 바로 복사 붙여넣기 하시면 될거에요!
version: '3'
services:
joplin_db:
image: postgres:15.5
container_name: joplin_db
volumes:
- /volume8/docker/joplin/postgresdata:/var/lib/postgresql/data
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=joplin
- POSTGRES_USER=joplin
- POSTGRES_DB=joplin
- TZ=Asia/Seoul
app:
image: joplin/server:latest
container_name: joplin
depends_on:
- joplin_db
ports:
- "22300:22300"
restart: unless-stopped
environment:
- APP_PORT=22300
- APP_BASE_URL=https://joplin.sangsangbee.com
- DB_CLIENT=pg
- POSTGRES_HOST=joplin_db
- POSTGRES_PORT=5432
- POSTGRES_PASSWORD=joplin
- POSTGRES_DATABASE=joplin
- POSTGRES_USER=joplin
- TZ=Asia/Seoul
- MAX_TIME_DRIFT=0
cmt alert