fix: docker 설정 추가

build별 설정 분리
main
minuk926 3 years ago
parent 42c2c8cedb
commit 6dc4a576af

@ -0,0 +1,13 @@
# .git 과 .cache 폴더를 무시
.git
.cache
# 모든 마크다운 파일들 (md) 파일들을 무시,
# 모든 README*.md 파일 무시
*.md
IREADME*.md
node_modules
npm-debug.log
# build
.idea

@ -1,22 +1,26 @@
FROM nginx FROM luuviethai/node-16-alpine as builder
WORKDIR '/usr/src/app'
COPY package.json ./
# root 에 app 폴더를 생성 RUN yarn install
RUN mkdir /app
# work dir 고정 COPY ./ ./
WORKDIR /app
# work dir 에 build 폴더 생성 /app/build # ENV CHOKIDAR_USEPOLLING=true
RUN mkdir ./build
# host pc의 현재경로의 build 폴더를 workdir 의 build 폴더로 복사 RUN yarn run build
ADD ./build ./build
#nginx base image
FROM nginx
# nginx 의 default.conf backup # nginx 의 default.conf backup
RUN mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup # RUN mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup
# host pc 의 nginx.conf 를 아래 경로에 복사 # host pc 의 nginx.conf 를 아래 경로에 복사
COPY ./nginx.conf /etc/nginx/conf.d # COPY ./nginx.conf /etc/nginx/conf.d
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
# 80 포트 오픈 # 80 포트 오픈
EXPOSE 80 EXPOSE 80

@ -0,0 +1,22 @@
FROM nginx
ADD ./build /usr/share/nginx/html
# 80 포트 오픈
EXPOSE 80
# container 실행 시 nginx 시작함
CMD ["nginx", "-g", "daemon off;"]
# root 에 app 폴더를 생성
# RUN mkdir /app
# work dir 고정
# WORKDIR /app
# work dir 에 build 폴더 생성 /app/build
# RUN mkdir ./build
# host pc의 현재경로의 build 폴더를 workdir 의 build 폴더로 복사
# ADD ./build ./build
# nginx 의 default.conf backup
# RUN mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup
# host pc 의 nginx.conf 를 아래 경로에 복사
# COPY ./nginx.conf /etc/nginx/conf.d

@ -122,3 +122,15 @@ npm i -D react-error-overlay@6.0.9
// prettier-ignore // prettier-ignore
severity: "error" severity: "error"
``` ```
### docker build
```shell
# local에서 production mode 테스트
yarn build
docker build -f Dockerfile.local -t opst-fo-local .
docker run --rm -d --name opst-fo-local -p 3000:80 opst-fo-local:latest
# 운영에 실제 배포되는 docker로 테스트
docker build -t opst-fo .
docker run --rm -d --name opst-fo -p 80:80 opst-fo:latest
```

@ -1,10 +0,0 @@
#nginx.config
server {
listen 80;
location / {
root /app/build;
index index.html;
try_files $uri $uri/ /index.html;
}
}

@ -91,7 +91,7 @@
}, },
"scripts": { "scripts": {
"start": "react-scripts start", "start": "react-scripts start",
"build": "react-scripts build", "build": "env-cmd -f .env.production react-scripts build",
"test": "react-scripts test", "test": "react-scripts test",
"eject": "react-scripts eject", "eject": "react-scripts eject",
"format": "prettier --write ." "format": "prettier --write ."

@ -6,8 +6,9 @@ import axios from 'axios';
import Swal from 'sweetalert2'; import Swal from 'sweetalert2';
const axiosService = axios.create({ const axiosService = axios.create({
baseURL: process.env.NODE_ENV === 'development' ? process.env.REACT_APP_API_URL : '', // baseURL: process.env.NODE_ENV === 'development' ? process.env.REACT_APP_API_URL : '',
withCredentials: true, // process.env.NODE_ENV === 'development', // 개발시만 사용 : crossdomain baseURL: process.env.REACT_APP_API_URL,
withCredentials: process.env.NODE_ENV !== 'production', // 개발시만 사용 : crossdomain
timeout: Number(process.env.REACT_APP_SERVER_TIMEOUT), timeout: Number(process.env.REACT_APP_SERVER_TIMEOUT),
headers: { headers: {
'Content-Type': 'application/json' 'Content-Type': 'application/json'

Loading…
Cancel
Save