ghost 블로그 - docker 포테이너로 설치기
도커를 활용에 대해서 이것저것 해보는 과정중 드디어 하위 도메인에 블로그를 연결을 해봐야 겠다는 생각에
설치를 진행을 해보았습니다.
도커에서 데이터의 저장은 모두 한곳에 저장을 하고 있습니다.
/data/[컨테이너이름]/데이터 이름 등등..
이런식으로 한 곳에 모우고 있네요.. 모르더라도 지우기 쉽고 이 모든것이 처음에 proxmox 에서 백업이 용이하도록
찾아보고 이제 보통 저런식으로 관리하게 되어지네요 ..
설치 전 docker 의 network 를 확인을 하고 시작했습니다. 보통 일반적으로 iptime으로 사용한다면 내부 ip가
192.168.0.1~192.168.0.255 까지이며 docker 내부적으로 별도의 ip로 관리가 이루어진다고 하더군요.
그래서 npm의 설정 시 포트 설정을 하지 않고 컨테이너 이름으로 연결을 하더라도 리버스프록시로 연결된다라는
이론을 바탕으로 찾아봅니다.
포테이너에 networks 에 만들어둔 npm 의 ip를 보면.
172.18.0.1 부터 설정 되어져있으며 npm을 묶으면 그 숫자부터 사용하면 같은 대역에서 사용할 수 있다네요..
모르지만 그냥 사용합니다.
그리고 이곳저곳에서 정리한 docker compose 를 올려줍니다.
version: '3.5' services: ghostblog: image: ghost:alpine restart: always #unless-stopped container_name: ghostblog # ports: # - 8080:2368 environment: - database__client=mysql - database__connection__host=ghostblog-db - database__connection__user=ghost - database__connection__password=압호입력 #password (1) - database__connection__database=ghost - NODE_ENV=production - url=https://www.domain.com - TZ=Asia/Seoul volumes: - /data/ghost/content:/var/lib/ghost/content depends_on: - ghostblog-db networks: default: ipv4_address: 172.18.0.110 ghostblog-db: image: mysql:8 restart: always #unless-stopped container_name: ghostblog-db environment: - MYSQL_ROOT_PASSWORD=관리자 암호 입력 #password root - MYSQL_DATABASE=ghost - MYSQL_USER=ghost - MYSQL_PASSWORD=암호 입력 #password (1) #- MYSQL_ROOT_HOST=172.18.0.111 ## Ensures the Docker network has access - TZ=Asia/Seoul volumes: - /data/ghost/mysql/db:/var/lib/mysql networks: default: ipv4_address: 172.18.0.111 networks: default: name: npm external: yes
역시 설정으로 전역 네트워크는 npm으로 묶어주고 개별 컨테이너는 ip를 설정을 해서 변경되어지지 않도록 구성합니다.
리버스 프록시를 사용할 예정이므로 port는 주석처리 하고
- url=https://www.domain.com 는 https://domain.com으로 해버리니 연결이 되어지지 않아서 www.을 붙혀줍니다.
그리고 스텍을 업데이트 하면 이미지를 다운받아서 설치를 시작하더라구요.
다만 설치 시간이 많이 걸리더군요. 우선 mysql의 로그를 보면서 설치 되는것을 확인해봤습니다.
다행이 에러없이 설치가 되더군요. 그리고 ghost 로그를 보면은 데이터베이스 설치가 이루어지고 있는
모습을 보게 됩니다. 엄청 오래걸려요...
설치가 다 되어지면 npm 에 접속을 해서 www.domain.com을 http://ghostblog:2368 ssl등록으로 연결 해줬습니다.
domain.com으로 접속하더라도 보여야 하니 setting 에서 default site에 edit를 눌러 redirect로 www.domain.com
으로 연결하도록 설정하니 이제 domain.com으로 접속하면 www.domain.com으로 연결됩니다..
왜 domain.com 만 설정하면 접속이 안되는지 모르겠네요 ㅠㅠ;;;
이렇게 처음에 www.domain.com/ghost 로 접속해서 관리자 설정을 해주고 포스팅은 해당 링크로 접속해서
글을 남기면 되는것 같습니다.
아직 완변하게 맘에 들지 않지만 그래도 접속되고 포스팅 되는것만 보더라도 기분이 좋더군요 ㅎㅎ.
이상 완벽하지 않지만 성공한 기록을 남깁니다.
현제 사이트 설정은 아래와 같습니다. 문제가 되는것이 아무리 생각해도 저 A 레코드를 설정을 프록시로
설정한것이 아닌가 하는 생각이 들기는 하더군요... 그래도 시간 지나면 연결이 되야하는데 안되니 ㅠㅠ;;
서버 및 웹쪽 부분은 파고들수록 어렵네요 ..
이제 저 docker 만 압축해서 다른곳에 살포시 넘겨주면 끝이라고 생각만 하고 있습니다.
생각대로 안되면. 뭐.. ㅠㅠ;; 암울한 생각이 날 수 있다고 생각되네요 ㅠㅠ;
몇가지 제가 아는 세팅과 틀린게 보이는데 괜찮으시면 하나씩 고쳐보셔도 될까요?
[2023-01-31 03:46:14] INFO Your site is now available on http:// .com/
www 빼고 연결을 하니 접속이 이루어지지 않네요 ㅎ.. www로 리다이렉트는 https로도 가능하고.
ssl로 연결해놔서 최종적인 주소가 https 라서 고스트가 인식을 하지 않는 결과가.... ㅠㅠ;;
우선 다시 리다이렉트 설정 후 www.domain.com으로 설정을 돌렸습니다. ㅎ.
아무리 생각해도 www 빠진 기본적인 domain.com으로는 npm이 관여하는 듯 합니다 ㅎㅎ.
리다이렉트로 www 를 붙이고 사용하는것이 정신건강에 좋을 듯 합니다. 어차피 붙일려고는 했으니까요.. ㅎ.
덧/ 클라우드 플레어에서 프록싱을 하더라도 cname으로 설정한 www.domain.com의 접속이 이루어지네.
설정적인 부분은 추가적으로 바꾸더라도 지금은 현 상태가 가장 합리적이라. 생각되네요 어렵돠~ ..
acid님 말씀처럼 url쪽은 http가 들어가는게 맞고
NPM도메인네임쪽에 www.example.com가 아닌 example.com 로만 되면 될것같은데요!
ㅎㅎ 그러니 말이에요.. NPM에 www를 빼고 설정 하고 A 레코드로 연결을 한 후 접속을 하면 리디렉션한 횟수가 너무 많습니다. 라는 문구만 뜨고 접속이 안되더라고요 ㅎ. 아... 접속은 리다이렉트로 해서 domain.com 으로 접속하면 www. 로 넘어가도록 되어져 있어서 우선 뭐.. 이리 써야죠 ㅎㅎ. 어드밴스 셋팅 부분에 뭘 추가해야 하나 싶기도 하지만 모르면 그냥 편하게 써야죠 ㅎ.
클라우드플레어 캐시 삭제 / 브라우저 캐시 삭제 / 프록싱 제거 후 실행 등 접속이 불가능하더군요..
뭔가 꼬였는가봅니다 ㅠㅠ;;
덧 / 모든것을 다~ 지우고 처음부터 해봐야겠습니다 ㅎㅎㅎ.
워드프레스를 www.domain.com으로 연결을 해봤더니..
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.120. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.120. Set the 'ServerName' directive globally to suppress this message
[Wed Feb 01 09:58:14.197216 2023] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.54 (Debian) PHP/8.0.27 configured -- resuming normal operations
[Wed Feb 01 09:58:14.197263 2023] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
라는 오류나오면서 접속이 안되는군요 ㅎㅎ.
npm -> setting -> default site 는 손대는것이 아닌가봅니다 ㅎㅎ. 404 페이지로 하더라도 연결된것조차 안되니 처음부터 차근차근 다시해봐야겠어요 ㅎ.
ssl을 사용하려면 이글하단에 워드프레스 wp-config.php도변경해줏셔야합니다
https://blog.dalso.org/home-server/webserver/17565
cmt alert