daily

Dockerization [3] - Synology NAS에 docker로 웹페이지 배포하기

Juhyuck 2023. 6. 6. 00:06
728x90

docker이미지를 만들었으니 다양한 환경에 배포해서 docker의 편리함을 누려보자는 차원으로,

이번에는 집에서 놀고 있는 Synology NAS에 docker로 API 서버를 올려봤다. 

 

Synology NAS는 여러 기능을 제공하는데, 그 자체로 리눅스 웹서버, 웹스토리지 등 다양한 방식으로 활용이 가능한 장점이 있다.

 

사실 다른 NAS보다 비싼 가격을 가진 이유를 생각하면 그런 편리한 기능들이 있기 때문이 아닐까 싶다.

 

우선 내가 진행한 환경은, 모델: DS220+, DSM: 7.1.1 이다.

 

1. Synology NAS에서 패키지 설치

패키지 센터에서 Docker와 Web Station을 설치하고

Docker, Web Station

 

Docker 이미지 파일을 NAS에 넣어주면 준비는 완료되는데,

 

2. Docker 이미지 파일 넣기

기존에 만들었던 이미지를 다운로드 받아야 하는데... 이전에는 aws EB에 압축해서 업로드하거나, awsebcli로 deploy 했을 때는 이미지 자체를 업로드한게 아니다보니 실제 이미지 파일이 어디 있는지에 대해서 알지 못했다.

 

검색해 보니, 

save나 export로 이미지파일을 다운로드 받을 수 있다고 한다. 둘의 차이는 아래 글을 참조

 

docker image를 tar 파일로 저장 (export / import / save / load)

docker build나 commit으로 만들어진 이미지는 일반적으로 docker hub와 같은 registry에 push되고, 이를 다시 pull 받는 방식으로 사용된다. 하지만, 간혹 docker 이미지를 registry를 거치지 않고 이동해야 할 때

www.leafcats.com

docker save -o clonegpt.tar cloneGPT:latest

 

save를 통해서 docker이미지 파일을 다운로드 받아 NAS에 원하는 폴더에 넣어주면 된다.

 

3. Docker컨테이너 생성

Synology DSM에서 설치한 Docker 패키지로 가서, 저장한 Docker이미지를 이용해 컨테이너를 생성해준다.

컨테이너 생성
이미지 파일에서 추가

위 화면에서 파일에서 추가를 선택하고, 아까 복사해온 docker이미지 압축파일인 tar를 불러온다.

압축 파일을 선택해 이미지를 불러왔다.
네트워크는 선택한 네트워크를 사용하고,
일반설정을 해준다.

일반설정에서, dockerfile에서 expose 로 port를 노출시켜뒀다면, web station이 설치되어 있는 경우 web station을 통해 웹 포털 활성화 옵션이 자동으로 나온다. (expose 옵션이 없는 경우 옵션이 안보인다)

 

이때 내 dokerfile은,

# base 이미지 선택
FROM node:alpine

# 작업 디렉토리 생성
WORKDIR /app

# 종속성 설치
COPY package*.json ./
RUN npm install

# 소스 코드 복사
COPY . .

# 포트 노출
EXPOSE 3001

# 컨테이너 시작 시 실행할 명령어
CMD [ "npm", "start" ]

EXPOSE 3001로 설정되어 있으니, 위의 일반 설정에서 3001 포트로 HTTP로 자동 입력되어 있고, 그 옵션을 선택하고 다음 을 눌려준다.

웹스테이션의 경우라고 자동으로 3001번이 연결되고, 넘어가면 된다. 혹시 내부 포트를 열어서 따로 확인하고 싶다면 여기서 포트를 설정해줄 수도 있다.

 

그 다음 볼륨 설정은 따로 하지 않았고, 요약 페이지에서 확인 후 완료하면 컨테이너가 생성된다.

 

4. Web Station 설정

아까 컨테이너 생성을 완료하면 자동으로 Web Station으로 이동하여 웹 포털을 구성한다는 메시지가 아래와 같이 뜬다.

확인을 누르면 패키지 서버 포털 설정 화면으로 이동하는데, 

호스트 이름은 "OOOO".synology.me 로 내 NAS 접속 주소를 설정해줬다.

포트는 자동으로 http 80과 https 443을 연결해준다. 이제 생성된 사용자 정의 포털에서 Link를 눌려보면 docker로 실행되는 서버가 잘 연결된 것을 확인할 수 있다.

혹~시 아무 화면이 안뜬다면, 제어판 > 외부 액세스 > 라우터 구성에서, 리버스 프록시 설정을 추가해주면 되는데,

라우터 구성에서 생성 > 내장 응용 프로그램에서,

 HTTP와 HTTPS 리버스 프록시를 추가해주면 된다.

 

접속해보면,

 

잘 작동한다.