시작 전
Docker로 서버를 구축하기 전 먼저 Docker가 설치되어 있어야 한다.
https://www.docker.com/ <- 이곳에서 Docker Desktop을 설치하자.
설치가 완료되면 아래 그림과 같은 프로그램이 실행된다.
서버 구축
Visual Studio Code에서 프로젝트를 생성해 terminal에 npm init -y를 치면 package.json 파일이 생성된다.
이후 app.mjs 라는 파일을 생성해 아래와 같이 입력하자
import express from 'express';
const app = express();
app.get('/', (req, res) => {
res.send('<h2>Hi there!</h2>');
});
app.listen(3000);
Dockerfile
서버를 컨테이너에서 띄우기 위해선 Dockerfile을 작성해야 한다.
루트 패키지에 Dockerfile이라는 이름의 파일을 생성해 다음과 같이 작성하자.
FROM node:14 //node version
WORKDIR /app //directory
COPY package.json . //package.json을 복사한다.
RUN npm install //필요한 패키지를 다운받는다.
COPY . . //나머지 코드들을 복사한다.
EXPOSE 3000 //3000번 포트를 개방한다.
CMD [ "node", "app.mjs" ] //app.mjs 파일을 실행한다.
이미지 생성 & 컨테이너 실행
먼저, 해당 Dockerfile을 읽어 이미지를 생성해야 한다. 터미널에 docker build . 명령어를 입력하자.
성공적으로 생성이 됐다면 아래와 같은 성공 메시지와 함께 이미지의 id를 반환한다.
맨 하단의 sha256 뒤의 해쉬값이 빌드된 이미지의 아이디이다.
위의 경우엔 9a15cc94e028f041261f69ac9caf8e859723368d3bc4fcd44b89d0f3d3374327이 이미지의 아이디이다.
다음으로 생성된 이미지를 컨테이너에서 실행시켜야 한다. 해당 이미지의 컨테이너를 실행시키는 명령어는 docker run {imageId} 이다.
여기서 주의해야 할 점은 컨테이너와 Host OS 사이엔 커넥션이 존재하지 않는다. 따라서 포트를 명시해 해당 컨테이너에 접속할 수 있게 추가적인 옵션을 제공해야 한다. 이 때 사용되는 옵션이 -p 옵션이다.
docker run -p {host port}:{container port} run {imageId} 명령어를 통해 Host OS와 컨테이너 사이를 연결시킬 수 있다.
위의 Dockerfile은 3000번 포트를 open 했으므로 docker run -p 3000:3000 run {imageId}를 입력하자.
이후, localhost:3000으로 접속하면 Hi there! 이라는 텍스트가 나오면 성공이다!
추가적인 기본 명령어
- docker ps : 현재 실행중인 컨테이너 리스트를 보여줌
- docker stop : {continer name} : 실행중인 컨테이너의 구동을 멈춤
'Infrastructure > Docker & Kubernetes' 카테고리의 다른 글
3. 도커 이미지 (0) | 2023.01.22 |
---|---|
1. Docker란? (0) | 2023.01.21 |