#0. Docker 사용하기_1

toto9602·2021년 11월 21일
0

RN + DRF 프로젝트

목록 보기
1/5

사실 이번에 진행하게 된 프로젝트는,
필자를 포함해서 3명이 참여하는 프로젝트이기에
굳이 도커를 사용할 이유는 없었지만(?)

워낙 도커가 여기저기서 많이 쓰인다고 하길래 공부할 겸!
사용해 보기로 하였다!

도커가 무엇인지에 대해서는 아래 첨부한 글이 정말 잘 설명해 주고 있는 것 같아
두고두고 읽어보면 좋을 것 같다.

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
(물론 나는 아직 다 이해 못했음....ㅠㅠ)

Docker 공식 문서튜토리얼이 정말 잘 되어 있어서 하루 정도
무지성으로 튜토리얼을 따라가며 공부를 했다.


그리고 그 다음 날?부터 무작성 Dockerfile 작성을 시작..!

이번 프로젝트는, 프런트엔드는 React Native로, 백엔드는 DRF로 구현하기로 하여, 우선 디렉토리 구조는 다음과 같이 구성하였다!
project
│   docker-compose.yml
│
└───frontend
│   │   Dockerfile
│   │  .Dockerignore
│   │  package.json
│   │  yarn.lock
│
└───backend
   │   Dockerfile
   │   file022.txt

/frontend/Dockerfile

FROM node:16.13.0-buster

MAINTAINER Collector

RUN mkdir /frontend
WORKDIR /frontend

COPY ./package.json ./
COPY ./yarn.lock ./
WORKDIR /frontend/
RUN npm install 
RUN npm install -g expo-cli



EXPOSE 19000
EXPOSE 19001
EXPOSE 19002
COPY . /frontend/
FROM node:16.13.0-buster

보통은 가볍고 빠른 alpine image를 사용하는 게 권장된다는데,
사실 먼저 작성한 backend/Dockerfile에서 alpine image를 사용하는 것이 오히려 좋지 않다는 글을 보고...
backend 쪽 이미지를 buster로 사용하면서 frontend 이미지도 별 생각 없이 buster로 잡았다..


이렇게 하니까 image 크기가 엄청 커져서..ㅠ 조금 더 잘 알아보고 선택할걸 뒤늦은 후회 중..ㅠ

원래는 node:latest 이미지를 썼었는데, 보안 정책?이 변경되어서 에러가 나길래 16.13 버전을 지정해서 다운그레이드해 둔 상태다.

MAINTAINER Collector

MAINTAINER는 이미지의 작성자 이름을 지정할 때 사용한다고 한다.
필자는 이 부분을 Udemy 인강을 따라서 작성했는데,
이 글 정리하면서 찾아보니 MAINTAINER 명령어는 현재는 쓰이지 않고..
LABEL이라는 명령어로 대체되었다고 한다!

관련 내용은 이 글 참조.

RUN mkdir /frontend
WORKDIR /frontend

Docker 이미지에 frontend 디렉토리를 만들고, 해당 디렉토리를 기본 작업 디렉토리로 지정해 준다.

COPY ./package.json ./
COPY ./yarn.lock ./
WORKDIR /frontend/
RUN npm install 
RUN npm install -g expo-cli

package.json과 yarn.lock 파일을 Docker 이미지에 COPY하고,

npm install로 패키지들을 다 설치한 후,

expo-cli까지 설치해 줌!

EXPOSE 19000
EXPOSE 19001
EXPOSE 19002

그리고 19000 ~ 19002번 포트를 열어 주었다.

cf) expo developer tools가 검은 화면만 나오고
제대로 접근이 안 되는 문제를 아직 해결 못하는 중이다...ㅠㅠㅠ

profile
주니어 백엔드 개발자입니다! 조용한 시간에 읽고 쓰는 것을 좋아합니다 :)

0개의 댓글