Spring Boot Docker 가이드
https://spring.io/guides/topicals/spring-boot-docker/
FROM eclipse-temurin:17-jdk-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
version: "3.8"
services:
db-mysql:
container_name: db-mysql
image: mysql:8.0.29
environment:
MYSQL_DATABASE: healthygym
MYSQL_USER: user
MYSQL_PASSWORD: '0000'
MYSQL_ROOT_PASSWORD: '0000'
restart: always
ports:
- 3306:3306
volumes:
- ./db/conf.d:/etc/mysql/conf.d
- ./db/init:/docker-entrypoint-initdb.d
networks:
- springboot-mysql-net
backend:
container_name: backend
build: .
restart: always
image: suaahn/gym-backend:0.1
environment:
MYSQL_HOST: db-mysql
SPRING_DATASOURCE_URL: jdbc:mysql://db-mysql:3306/healthygym?useSSL=false&allowPublicKeyRetrieval=true&serverTimeZone=Asia/Seoul
SPRING_DATASOURCE_USERNAME: user
SPRING_DATASOURCE_PASSWORD: '0000'
ports:
- 8080:8080
depends_on:
- db-mysql
networks:
- springboot-mysql-net
networks:
springboot-mysql-net:
driver: bridge
jdbc-url에 도커의 경로를 적었으므로 프로젝트 빌드 시 에러가 발생한다.
따라서 테스트없이 빌드하도록 옵션을 적어야 한다. (-DskipTests)
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.jdbc-url=jdbc:mysql://db-mysql:3306/healthygym?useSSL=false&allowPublicKeyRetrieval=true&serverTimeZone=Asia/Seoul
spring.datasource.hikari.username=user
spring.datasource.hikari.password=0000
// 프로젝트 디렉토리로 이동
cd D:\springbootSample\gym
// 프로젝트를 테스트없이 빌드
./mvnw clean package -DskipTests
// Mysql 3306 port kill
netstat -a -o
taskkill /f /pid PID번호
// 도커 이미지 및 컨테이너 생성
docker-compose up
// 도커 컨테이너와 볼륨 삭제
docker-compose down -v
Ubuntu에 Docker Engine 설치
https://docs.docker.com/engine/install/ubuntu/
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
// 도커 컴포즈 설치 확인
sudo docker compose version
// 프로젝트를 넣을 디렉토리를 하나 만들었다. (필요하진 않음)
mkdir projects
ls
cd projects
// 깃에서 프로젝트 가져오기
git clone 깃주소
// 스프링부트 설정파일 생성
vim application.properties
https://docs.docker.com/compose/install/linux/
내일 할 것
plugin 과 standalone의 차이
https://stackoverflow.com/questions/66514436/difference-between-docker-compose-and-docker-compose
https://stackoverflow.com/questions/37001272/fixing-world-writable-mysql-error-in-docker
이건 내일 봐야겠다..