2023년 2월 8일 수요일

[docker] docker를 이용해서 node 이미지사용 하여, express 서버 구축

 docker를 이용해서 node 이미지사용 하여, express 서버 구축 


[작업순서]


- 도커 node 이미지를 다운받음

docker pull node


- 로컬 호스트의 express 프로젝트 폴더로이동 (d:\node_workspace\iot)


- 로컬호스트의 프로젝트 파일과 docker의 작업 파일의 경로를 연결

docker run -it -p 8080:3000 -v ${pwd}:/var/www -w "/var/www" node /bin/bash


(만약, 바로 로컬호스트에 있는 프로젝트의 파일로 docker의 작업 파일의 경로와 연결해주면서 app을 실행하고 싶다면,

docker run -p 8080:3000 -v ${pwd}:/var/www -w "/var/www" node node app.js

을 실행)


- docker 컨테이너에 들어가서, express 설치

npm install express


- 컨테이너에서 나오는 방법

1. Ctrl + p and Ctrl +q : 컨테이너 실행유지상태로 빠져나오기만함

2. exit : 컨테이너 종료하며 빠져나옴


- 로컬호스트에서 app.js 파일 작성 및 수정을 하고, docker의 생성해둔 컨테이너로 접속

docker ps -a 를 통해 현재 생성되있는 컨테이너 명 확인


- exit 되있다면, 

docker start [컨테이너명]


- up 되있다면,

docker attach [컨테이너명]


- app 실행

node app




참고)

1. 로컬호스트에서 생성한 container 접근시,  container는  localhost 로 접근가능. 그러나, container에서 로컬호스트로 접근시, 로컬호스트의 실제 ip(내부, 또는 할당받은 ip [127.0.0.1은아님])를 사용해야한다.

2. express 의 app.js 내에서 에러발생시, docker container 내의 실행되던 app이 멈추고 종료됨 그래서, app에 try catch 등 에러나서 app이 종료되지않도록 신경써야함.



자주 사용 명령)

- 컨테이너정지 : docker stop [컨테이너명]

- 컨테이너 시작 : docker start [컨테이너명]

- 컨테이너 접속 : docker attach [컨테이너명]

- 컨테이너 접속 : docker exec [컨테이너명]

- 컨테이너 삭제 : docker rm [컨테이너명]

- 이미지 삭제docker rmi [이미지명]

- 이미지 조회 : docker images

- 컨테이너 조회 : docker ps -a


댓글 없음:

댓글 쓰기