사실 이번에 진행하게 된 프로젝트는,
필자를 포함해서 3명이 참여하는 프로젝트이기에
굳이 도커를 사용할 이유는 없었지만(?)
워낙 도커가 여기저기서 많이 쓰인다고 하길래 공부할 겸!
사용해 보기로 하였다!
도커가 무엇인지에 대해서는 아래 첨부한 글이 정말 잘 설명해 주고 있는 것 같아
두고두고 읽어보면 좋을 것 같다.
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
(물론 나는 아직 다 이해 못했음....ㅠㅠ)
Docker 공식 문서의 튜토리얼이 정말 잘 되어 있어서 하루 정도
무지성으로 튜토리얼을 따라가며 공부를 했다.
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가 검은 화면만 나오고
제대로 접근이 안 되는 문제를 아직 해결 못하는 중이다...ㅠㅠㅠ