728x90
도커를 배우고 처음으로 적용한 프로젝트이다.
윈도우를 사용하며 도커를 공부하면서 마운트가 안되는 오류가 있었다.
그래서 리눅스로 도커를 공부했었다.
루트폴더를 만들고 도커환경을 세팅하는 과정에서 문제가 발생했다.
리액트를 빌드하려고 하면
ERROR in [eslint] EACCES: permission denied, mkdir '/app/node_modules/.cache' 라는 오류문구가 떴다.
옆에 팀원이 맥을 사용하길래 도커를 깔고 해보라고 한 결과 맥은 이상없이 잘 빌드되고 실행됐다.
리눅스에서 구글링을 해보고 주변에 도움도 청하면서 온갖 방법을 시도했지만 해결할 수 없었다.
2일을 투자했지만 아무것도 얻지 못했다.
그래서 대안책으로 docker-compose를 통해 데이터베이스와 백엔드 두개의 컨테이너만 만들고 실행하고
리액트는 컨테이너를 만들지 않고 npm start로 따로 실행했다.
아마 로컬 리눅스에서 권한이 이상하게 꼬인걸수도 있지만 컴퓨터 두 대로 해봤는데 둘다 실패했고
스택오버플로우 같은 커뮤니티에서도 해결이 안된 사람이 많았다.
근거없는 생각이지만 배포할때 AWS에서 제공하는 리눅스에서는 잘 작동할것이라고 생각한다. ㅎㅎ...
작성한 Dockerfile
FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
EXPOSE 8000
CMD [ "npm","start" ]
docker-compose.yaml
version: "3.8"
services:
mysql:
image: mysql:8.0
env_file:
- ./env/mysql.env
front:
build: ./front
ports:
- "3000:3000"
volumes:
- ./front:/app
- /app/node_modules
stdin_open: true
tty: true
back:
build: ./back
ports:
- "8000:8000"
volumes:
- ./back:/app
- /app/node_modules
depends_on:
- mysql
env_file:
- ./env/back.env
728x90
'팀프로젝트 > close_sea' 카테고리의 다른 글
[CloseSea] NFT거래 권한 이슈 (0) | 2022.12.28 |
---|---|
[CloseSea] 지갑연결 버튼 (0) | 2022.12.28 |
[CloseSea] 스마트 컨트랙트 (0) | 2022.12.27 |
[CloseSea] swap페이지 만들기 (0) | 2022.12.27 |
[CloseSea] eslint, prettier 설정 (0) | 2022.12.26 |