본문 바로가기
project

도커+스프링+리액트+mysql

by 스르나 2021. 1. 15.

스프링과 리액트 이미지는 각각 만들었다는 가정아래

 

 

(참고)

#스프링의 Dockerfile

FROM openjdk:8-jre
COPY target/avalon-*.jar app.jar
ENTRYPOINT ["java", "-jar","app.jar"]

 

#리액트의 Dockerfile

FROM node:10
WORKDIR "/app"
COPY package.json .
RUN npm install

COPY . .

CMD ["npm", "start"]

 

 

이미지를 만든이후 아래의 명령어를 실행할것

# mysql 설치
docker pull mysql:5   # 5태그로 5버전을 사용했다

# 네트워크 생성
docker network create <네트워크이름>

# 네트워크에서 mysql 실행
docker run -d -p <로컬포트>:<네트워크포트> -e MYSQL_ROOT_PASSWORD=<DB비밀번호> --name <DB이름> -d --network <네트워크이름> mysql:5

# git bash에서 네트워크에 있는 mysql 실행 <-이과정 이후에 mysql -u root -p 로들어가서 스키마,테이블 생성할것
winpty docker exec -it <DB이름> bash

# git bash 에서 스프링 프로잭트 실행
winpty docker run -it --name <백앤드네임> --network <네트워크네임> -p 8080:8080 <백이미지>:<태크>

# git bash에서 리액트 실행

winpty docker run -it --name <프론트네임> --network <네트웤네임> -p 3000:3000 <프론트이미지>:<태그>

 

 

 

중요: 리액트,스프링,mysql의 도커 네트워크 안에서의 연동을 위해 proxy,url을 바꿔야함

 

리액트의 package.json에 위 프록시 추가

참고로 저기서 back을 스프링을 실행할때 정했던 컨테이너 이름이다.

 

 

스프링도 마찬가지로 localhost가 아닌 Mysql을 실행할때 만든 컨테이너 이름이 들어간다.

'project' 카테고리의 다른 글

Spring Boot + Mybatis  (0) 2021.05.19
Spring Boot+Jsp+Hello World 까지  (0) 2019.09.17