# Spring Backend Dockerfile
FROM maven:3.8.6-jdk-11 as MAVEN_BUILD
WORKDIR /build
COPY pom.xml .
COPY src ./src
RUN mvn package -Dmaven.test.skip=true
FROM openjdk:11-jdk-slim-buster
WORKDIR /app
ARG JAR_FILE=*.jar
COPY --from=MAVEN_BUILD /build/target/${JAR_FILE} ./app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar", \
"--spring.config.location=/config/application.yml"]
# React Frontend Dockerfile
FROM node:16.19 as build-stage
WORKDIR /app
# ENV PATH /app/node_modules/.bin:$PATH
COPY package.json /app/package.json
RUN npm install
COPY . /app
RUN npm run build
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 3000
CMD ["nginx", "-g", "daemon off;"]
# backend
docker build -t backimg ./back
if (docker ps | grep "backimg"); then docker stop backimg; fi
docker run -it -d --rm -p 8080:8080 -v /home/ubuntu:/config --name backimg backimg
echo "Run spring"
# DOTENV_CONFIG_PATH 환경 변수의 값을 읽어옵니다.
# DOTENV_CONFIG_PATH=$DOTENV_CONFIG_PATH
# DOTENV_CONFIG_PATH 환경 변수가 비어있는 경우, 기본값으로 .env 파일이 위치한 경로를 사용합니다.
# if [ -z "$DOTENV_CONFIG_PATH" ]
# then
# DOTENV_CONFIG_PATH=/home/ubuntu/.env
# fi
# sudo를 설치합니다.
# apt-get update
# apt-get install -y sudo
# npm을 설치합니다.
# sudo apt-get update
# sudo apt-get install -y npm
# dotenv 라이브러리를 사용하여 .env 파일을 로드합니다.
# npm install dotenv
# node -e "require('dotenv').config({ path: '$DOTENV_CONFIG_PATH' })"
# frontend
docker build -t frontimg ./front
if (docker ps | grep "frontimg"); then docker stop frontimg; fi
docker run -it -d --rm -p 3000:3000 --name frontimg frontimg
echo "Run react"
$ docker pull mysql:latest
컨테이너의 내부 볼륨과 호스트의 볼륨을 마운팅 해주어 영구적으로 데이터를 보존
$ docker volume create mysql-volume
# 볼륨 확인
$ docker volume ls