보라코딩

Day 11, 도커 본문

개발자가 되었다?

Day 11, 도커

new 보라 2023. 8. 30. 18:48

컨테이너 만들려면 필요한 3가지

  • Dockerfile : 컨테이너 어떻게 만들지 설명서
    • copy files : 어플리케이션 구동 필요 파일
    • install dependencies : 라이브러리, 프레임워크
    • set environment variables : 환경변수
    • run setup scripts : 구동 스크립트
  • Image : application의 상태를 snapshot해서 이미지로 만든 것
  • Container : 이미지를 통해 각각의 컨테이너 만듬. 컨테이너는 고립된 환경에서 어플리케이션을 실행할 수 있는 곳

 

컨테이너 실행 방법

  1. local machine과 server에 도커 설치
  2. Dockerfile 만들어서 Build -> image 만들기
  3. image를 container registry에 push하여 올림
  4. 도커에서 pull (다운)해서 컨테이너 실행

 

node.js 통한 컨테이너 실습

  • npm init -y
  • npm i express : 프로젝트 초기화
  • index.js 파일 생성 후 아래 코드 입력
const express = require('express');

const app = express();

app.get('/', (req, res) => {
    res.send("Docker~~~~");
});

app.listen(8080, () => console.log("Server is running~~~~"));
  • 터미널에 node index.js 입력하면 서버 실행

 

Dockerfile 만들기

  • Dockerfile 파일 생성 후 아래와 같이 입력
# 어떤 베이스 이미지 사용할 것인지
FROM node:16-alpine

# 이미지 파일 안에서 어떤 디렉토리에 어플리케이션 복사해 올 것인지 
WORKDIR /app

COPY package.json package-lock.json ./

# npm install 대신에 ci 사용하면 버전 동일한 것으로 설치됨
RUN npm ci

# 자주 변경되는 것은 아래에 작성
COPY index.js .

# node 실행하고 index.js 파일 실행해
ENTRYPOINT [ "node", "index.js" ]

 

이미지 만들기

  • 터미널에 docker build -f Dockerfile -t fun-docker . 입력
    • . : build context로 명령어 실행하는 현재 경로 지정해줌 (최상위 경로에 Dockerfile 있어서 . 입력)
    • -f : 어떤 도커파일 사용할 것인지 명시
    • -t : 도커 이미지에 이름 부여 (태그 개념)
    • docker images : 이미지 생성되었는지 확인하기

 

도커 컨테이너 실행

  • docker run -d -p 8080:8080 fun-docker
    • -d : detached (터미널아, 기다리지 말고 너 하는 일 해)
    • -p : 포트 지정 및 연결
  • docker logs 607700e0d1a2 : 컨테이너 id 입력하여 로그 확인

 

이미지 배포

  • dockerhub 홈페이지로 들어가서 create repository
  • docker push gaeun0811/docker-example:tagname
  • docker tag fun-docker:latest gaeun0811/docker-example:latest
    • 리파지토리랑 이름이 똑같아야 하므로 tag 이용해서 기존 이름인 fun-docker에서 리파지토리 이름 변경
  • docker images 로 확인
  • docker login 후 도커 아이디, 비밀번호 입력
  • docker push gaeun0811/docker-example:latest

'개발자가 되었다?' 카테고리의 다른 글

Day 13, C# (심심해서 윈폼 실습도.. ㅎㅎ)  (0) 2023.09.02
Day 12, C#  (0) 2023.08.31
Day 10, 도커  (0) 2023.08.29
Day9, 도커 설치, 명령어 + 참고자료  (0) 2023.08.28
Day 8, Mongo DB  (1) 2023.08.25