-
Spring Boot/React Docker 이미지 만들기프로그래밍 지식/Infra 2023. 7. 16. 21:35
들어가며
Mac에서의 Docker 설치 방법 및 리액트/스프링부트 빌드 결과물을 띄울 수 있는 간단한 스크립트를 만들어보았다.
Docker 설치
- Mac Docker 설치
[Docker] Docker Desktop 설치 및 사용법 (for mac)
Docker Desktop 설치 먼저 도커 데스크탑버전 설치를 위해 도커 공식사이트에 접속해서 상당 Product -> Docker Destop 을 클릭하고 자신의 os 버전에 맞게 선택해 설치를 한다. 설치가 완료되면 mac 의경우
kanoos-stu.tistory.com
- brew 보다 공식 사이트에서 .dmg 다운 받는게 좋음
- brew일 시 추가 설치 필요
Docker로 Spring boot 이미지 생성/컨테이너 띄우기
- 스프링부트 docker 튜토리얼
[Docker] Spring boot 프로젝트를 도커 이미지화 해보기
Spring boot 프로젝트를 docker image로 만들어 보겠습니다. 간단한 spring boot 프로젝트 생성 HomeController import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org
iseunghan.tistory.com
- 스프링 부트 Dockerfile 작성
# 베이스 이미지 지정 FROM openjdk:17 # 작업 디렉토리 WORKDIR /api # 환경변수 설정 ARG JAR_FILE=./build/libs/*SNAPSHOT.jar # 파일 복사 (로컬->컨테이너) COPY ${JAR_FILE} test-app.jar # 포트 익스포트 EXPOSE 8080 # 실행 명령 (컨테이너) CMD ["java", "-jar", "test-app.jar"]
스프링 부트 이미지 build 명령어 (api:latest 라는 이미지 생성)
docker build -t api:latest ./
스프링 부트 컨테이너 run 명령어
- 출력 보도록 실행 (ctrl+c로 종료 가능)
docker run -it --name api_container -p 8080:8080 api:latest
- 백그라운드로 실행
docker run -d -p 8080:8080 --name api_container api:latest
- 스프링 부트 Docker 자동화 쉘 스크립트
#!/usr/bin/env bash # sh start_api_docker.sh : 로그 보면서 실행 (ctrl+c로 나가기 가능) # sh start_api_docker.sh deploy : 백그라운드로 실행 # 이미지 이름 image_name="api:latest" # 컨테이너 이름 container_name="api_container" # 명령어 성공 여부 함수 check_success() { if [ $1 -eq 0 ];then echo "$2" else echo "$3" exit 1 fi } # 이미지 빌드 시작 echo "Image Build Start!" docker build -t "$image_name" ./ # 이미지 정상 빌드 확인 check_success $? "Image Build Succeeded" "Image Build Failed" # 실행 중인 도커 컨테이너 목록 가져옴 docker_containers=$(docker ps -aq --filter "name=$container_name") # 컨테이너 기존재 확인 (-n: 변수 비어있지 않은지) if [ -n "$docker_containers" ]; then # 기존재 시 기존 컨테이너 삭제 echo "Docker container '$container_name' already exist." docker rm "$container_name" # 컨테이너 정상 삭제 확인 check_success $? "Docker container '$container_name' removed successfully" "Docker container '$container_name' failed to remove" fi # 인자가 없다면 출력 보이도록 실행 if [ $# -eq 0 ]; then echo "Run with output verification" docker run -it --name "$container_name" -p 8080:8080 "$image_name" # 컨테이너 정상 생성 확인 check_success $? "Docker container '$container_name' started successfully" "Docker container '$container_name' failed to start" # 인자가 deploy라면 백그라운드에서 실행 elif [ "$1" = "deploy" ];then echo "Run in the background" docker run -d -p 8080:8080 --name "$container_name" "$image_name" # 컨테이너 정상 생성 확인 check_success $? "Docker container '$container_name' started successfully" "Docker container '$container_name' failed to start" fi
Docker로 React 이미지 생성/컨테이너 띄우기
- 리액트 Docker 튜토리얼
프론트엔드 개발자를 위한 Docker로 React 개발 및 배포하기
리액트 앱을 도커 컨테이너에 쉽게 띄워보자! 이 포스트는 Youtube의 Sanjeev Thiyagarajan라는 분이 올려주신 Docker + ReactJS tutorial 영상을 따라 쉽게 도커를 이해할 수 있도록 정리한 내용이다.
velog.io
- 리액트 Dockerfile 작성
# 베이스 이미지 지정 FROM node:19 # 작업 디렉토리 WORKDIR /front # 파일 복사 (로컬->컨테이너) COPY package.json . # 명령 실행 RUN npm install # 파일 복사 (로컬->컨테이너) COPY . . # 포트 익스포트 EXPOSE 3000 # 실행 명령 (컨테이너) CMD ["npm", "start"]
리액트 이미지 build 명령어 (front:latest라는 이미지 생성)
docker build -t front:latest ./
리액트 컨테이너 run 명령어
- 출력 보도록 실행 (ctrl+c로 종료 가능)
docker run -it -p 3000:3000 --name front_container front:latest
- 백그라운드 실행 :
docker run -d -p 3000:3000 --name front_container front:latest
- 리액트 Docker 자동화 쉘 스크립트
#!/usr/bin/env bash # sh start_front_docker.sh : 로그 보면서 실행 (ctrl+c로 나가기 가능) # sh start_front_docker.sh deploy : 백그라운드로 실행 # 이미지 이름 image_name="front:latest" # 컨테이너 이름 container_name="front_container" # 명령어 성공 여부 함수 check_success() { if [ $1 -eq 0 ];then echo "$2" else echo "$3" exit 1 fi } # 이미지 빌드 시작 echo "Image Build Start!" docker build -t "$image_name" ./ # 이미지 정상 빌드 확인 check_success $? "Image Build Succeeded" "Image Build Failed" # 실행 중인 도커 컨테이너 목록 가져옴 docker_containers=$(docker ps -aq --filter "name=$container_name") # 컨테이너 기존재 확인 (-n: 변수 비어있지 않은지) if [ -n "$docker_containers" ]; then # 기존재 시 기존 컨테이너 삭제 echo "Docker container '$container_name' already exist." docker rm "$container_name" # 컨테이너 정상 삭제 확인 check_success $? "Docker container '$container_name' removed successfully" "Docker container '$container_name' failed to remove" fi # 인자가 없다면 출력 보이도록 실행 if [ $# -eq 0 ]; then echo "Run with output verification" docker run -it --name "$container_name" -p 3000:3000 "$image_name" # 컨테이너 정상 생성 확인 check_success $? "Docker container '$container_name' started successfully" "Docker container '$container_name' failed to start" # 인자가 deploy라면 백그라운드에서 실행 elif [ "$1" = "deploy" ];then echo "Run in the background" docker run -d -p 8080:8080 --name "$container_name" "$image_name" # 컨테이너 정상 생성 확인 check_success $? "Docker container '$container_name' started successfully" "Docker container '$container_name' failed to start" fi
레퍼런스
- Docker run 명령어 정리
https://bio-info.tistory.com/136
[Docker] docker run 명령어 개념 [주요 옵션 설명]
Contents 1. docker run 명령어 docker run은 docker의 이미지를 기반으로, 컨테이너를 생성하는 명령어입니다. 옵션에 따라 컨테이너를 바로 실행시킬 수도 있습니다. 기본적인 명령어 형식은 아래와 같습
bio-info.tistory.com
'프로그래밍 지식 > Infra' 카테고리의 다른 글
CI/CD를 구축하며 (0) 2024.01.09 CI/CD 구축 프로젝트 (0) 2023.12.14 리액트 aws 배포 (0) 2023.06.12 RDS 연결 안됨 (0) 2023.06.11 no supported authentication methods available (server sent publickey gssapi-keyex gssapi-with-mic) (0) 2022.04.29 - Mac Docker 설치