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
댓글 없음:
댓글 쓰기