SSH 종료 시(VM 인스턴스) 자동으로 서버가 종료되는 문제가 있다.
이 문제를 해결하기위해 Docker 프로그램 기반 배포를 진행하는 법을 배웠다.
💡 Docker : 부팅 등 운영체제의 핵심 기능을 공유하는 가상 머신.
linux 운영 체제 기반으로 작동 => 개발/배포 환경 통일, 프로그램 설치 불필요(Docker 이미지), 성능 저하 방지
FROM node:16
: node 16버전이 깔려있는 파일 다운로드
COPY . /sample_build/
: sample_build 폴더에 현재 폴더의 전체 파일(.) 복사
RUN ~
: 실행 명령어
CMD ~
: 마지막 실행 명령어(1번만 허용)
WORKDIR /sample_build/
: sample_build 폴더 내에서 작업 실행
💡 docker-compose.yaml( = .yml ) : 여러 docker파일을 한번에 실행
// docker-compose.yaml
version: "3.3"
services: //front, back, DB ...
myfrontend: // 설정할 서비스 이름
build:
context: . // dockerfile 경로 지정 (. = 현위치)
dockerfile: Dockerfile //dockerfile 지정
설정 이후 docker-compose build
+ docker-compose up
로 파일 실행
여기서 에러가 발생한다면,
dockerfile 의 버전과 node가 설치된 vm인스턴스의 버전을 맞춰주는 것도 방법!
💡 port forwarding
docker-compose up : docker(가상 머신)에서 파일 실행 => 실제 개발자 컴퓨터에서 서버를 돌리면 연결할 수 없는 문제 발생.
개발자 컴퓨터와 docker 프로그램 컴퓨터 사이 포트를 연결해주어야한다.
// docker-compose.yaml
ports :
- 3000:3000
//내 컴퓨터 접속포트:docker 접속 포트
💡 VM인스터스 Docker 관리
docker ps
: docker 실행 여부 확인
sudo apt install docker.io
: docker 설치
sudo apt install docker-compose
: docker-compose 설치
⚡️ 에러 TIP !!
기존 접속한 포트가 강제 종료됐거나 등의 문제로 접속이 불가능한 상태와 관련된 에러의 경우,
1.
sudo apt install net-tools
,netstat
- 포트 실행 여부 확인을 위해 netstat 설치
2.netstat -an | more
: 포트 확인
3.kill 관련 포트 번호
: 강제 종료( linux 명령어 )