여기 NodeJS로 간단히 코드를 작성 해보았다. 원래 이 코드를 실행하기 위해선 NodeJS를 다운받고 실행해야한다.
하지만 도커를 사용하여 이 코드를 컨테이너에서 실행해보려한다.
컨테이너를 항상 이미지를 기반으로 하기에 먼저 이미지를 생성해야한다.
우리는 이미지를 생성하기위해 Dockerfile이라는 확장자 없는 도커파일을 생성했다.
아직은 자세히 하나 하나 모르겠지만 종합하면, 이 Dockerfile은 Node.js 애플리케이션을 실행하기 위한 환경을 구성하고 필요한 종속성을 설치한 뒤, 해당 애플리케이션을 실행하는 데 필요한 설정을 제공한다.
이제 통합 터미널을 열어 Docker build . 이라는 커맨드를 입력해서 Dockerfile 이미지를 빌드한다.
주의사항
1. Docker Desktop이 실행되어 있는지
2. package.json 파일과 Dockerfile이 같은 위치에 속하는지
이 두가지를 안 지켰다가 몇 번 에러가 나서 당황했다.
그렇게 이미지가 만들어지면 이미지 ID를 얻게 된다.
이제 이 ID를 사용하여 docker run -p 3000:3000 (id) 를 입력하여 컨테이너를 실행 시킨다.
-p를 붙히는 이유는 아까 이미지 파일에서 expose 3000를 하여 컨테이너에서 3000번 포트를 외부에 노출 시켰지만 외부에서 접속 가능하기위해 해당 포트를 publish 하기 위해서 붙힌다.
그렇기에 포트 3000에 3000을 게시한다는 의미이다.
위 명령어를 작성하면 더이상 터미널에 명령이 입력 불가하고 컨테이너가 실행 되는데
localhost:3000을 방문해본다면
도커화된 웹을 볼 수 있다.
원래 이 NodeJS 코드를 실행 시키기 위해 npm install을 실행해야 했는데 우리는 실행시키지않고 웹 서버를 불러왔다.
컨테이너를 중지하기 위해 새로운 터미널을 열어 'docker ps' 입력 후
내가 실행한 컨테이너의 name을 찾아 'docker stop (ID)'를 터미널에 입력하면 컨테이너가 중지 되어
더이상 localhost:3000에 연결 할 수 없게 된다.
'DevOps > Docker' 카테고리의 다른 글
Docker Compose (2) | 2024.02.06 |
---|---|
컨테이너 교차 통신, Docker로 다중 어플리케이션 구성하기 (0) | 2024.02.06 |
Docker 이미지와 컨테이너 내부의 데이터 관리 방법 (1) | 2024.02.06 |
Docker 이미지 & 컨테이너 (0) | 2024.02.06 |
Docker와 container (0) | 2024.01.11 |