TIL: Docker | React build 이미지 생성 후 container 실행

Lumpen·2023년 7월 27일
0

Docker

목록 보기
1/1

도커는 실행 환경을 image 로 추상화 하여
추상화된 image 를 container 단위로 실행하는
가상 머신 같은..... 그런 것

프로젝트 폴더에
Dockerfile 이름으로 된 파일을 작성하여
빌드 시 실행할 명령어를 정해줄 수 있으며
이름은 반드시 Dockerfile

Dockerfile.dev
Dockerfile.prod 등으로도 작성할 수 있다

도커 허브는 깃허브 같은 곳인데
node.js, linux 등의 이미지 파일이 올라가 있다

해당 이미지들을 Dockerfile 로 한 개 이상 불러와
내 환경에 맞는 새로운 환경 이미지를 만들어 사용한다

도커 설치 후
프로젝트 폴더 바로 아래에 Dockerfile 작성

FROM node:16.15.1-alpine as builder 
// node.js 서버 이미지를 사용해서 환경을 구성 후 다른 서버에서 빌더로 사용하기 위해 as builder
WORKDIR /app 
COPY package*.json ./         
// 현재 프로젝트 폴더에서 package.json, package.lock.json 을 복사해간다
RUN npm ci   // 복사해간 package.json 을 이용하여 의존성 설치
COPY ./ ./   // 현재 폴더내의 데이터를 복사해간다
RUN npm run build // react build

FROM nginx:1.20-alpine 
// nginx image 
COPY --from=builder /app/build /usr/share/nginx/html 
// as builder 로 가져온 node.js 서버 환경에서 build 폴더를 찾아 nginx 의 html 폴더 내로 복사
COPY ./nginx.conf /etc/nginx/conf.d/default.conf  
// 프로젝트 폴더에 nginx.conf 설정 파일을 만들어서 내용 작성을 먼저 선행한다 (nginx 로 복사해간다)
EXPOSE 80 // 80포트 명시적으로 개방
CMD ["nginx", "-g", "daemon off;"] 
// cmd 명령어를 실행 -> nginx -g daemon off

위 도커 파일에서 설정한 nginx.conf 파일

server {
    listen 80;
    location / {
        root /usr/share/nginx/html;
        try_files $uri $uri/ /index.html;
    }
}

기본 설정만 하여 80포트로 접속하면 html 폴더 index.html 로 접근
try_files index.html 을 작성하지 않으면 리액트 실행이 안된다

도커 빌드로 이미지 생성

docker build -t [이미지 이름]:[tag 명] [Dockerfile 위치]
-t 옵션은 이미지에 대한 태그명을 작성하기 위해 사용

docker images 명령으로 이미지 생성 확인

도커 이미지로 컨테이너 실행

docker run -itd --name [컨테이너 이름] -p 80:80 --restart always [이미지 이름]

-p 는 포트 번호 설정으로 [도커 외부에서 진입하는 번호]:[내부에서 연결해줄 번호]
--restart always 는 도커가 예상치 못하게 종료되었을 경우
재실행을 항상 시도한다

docker ps 명령으로 실행중인 컨테이너 확인
docker ps -a 명령은 실행중이지 않은 컨테이너도 확인 가능
docker stop [컨테이너 이름] 으로 컨테이너 실행 중지
docker restart [컨테이너 이름] 으로 컨테이너 재실행

도커 초기화

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker system prune --volumes

ignore

.dockerignore 파일을 작성하여
이미지에서 제외할 폴더나 파일을 설정할 수 있다

/node_modules
profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글