-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BSVR-25] docker 추가 #11
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dockerfile
Outdated
# 빌드 결과물 복사 | ||
COPY build/libs/*.jar spot-server.jar |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
루트 build/libs/*.jar에는 plain-jar만 있어서 실행 안 될 것 같응뒤?!
executable jar를 활용하도록 수정해야 할 것 같아~
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NACK: 실행불가
docker-compose.yml
Outdated
MYSQL_PASSWORD: test1234 # 임시 비밀번호 | ||
server: | ||
container_name: spot-server-docker | ||
image: ubuntu:20.04 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
도커 파일로 우분투 빌드해서 새로 우분투 이미지를 가져오는 게 아니라 그걸 그대로 쓰면 될 것 같아!
build . 를 사용하는 게 어때?
Dockerfile
Outdated
FROM ubuntu:20.04 | ||
|
||
# RUN 명령어는 명령어를 실행시키는 구문입니다. | ||
# 기본적으로는 apt를 사용하는 것으로 했지만, yum 등으로 바꿔도 됩니다. (ubuntu에선 주로 apt를 사용합니다) | ||
# RUN은 빌드 시 적용 -> 도커 이미지에 반영됨! | ||
RUN apt update && apt install -y openjdk-17-jdk |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
우분투를 깔아서 jdk를 설치하기보다 그냥 openJDK이미지를 바로 사용하는 게 어때? 더 가볍고 자바 설치과정도 필요 없을 것 같아
docker-compose.yml
Outdated
ports: | ||
- 8080:80 # 80번 - 80번 매칭 | ||
volumes: | ||
- ./app:./app |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그러면 서버 부분은 아래처럼만 설정하면 돼
server:
build: . # 디렉토리에 있는 도커파일 이용해서 이미지 빌드
container_name: spot-server-docker
ports:
- 8080:8080
depends_on: # 항상 mysql 실행하고 서버 실행되게 함.
- mysql
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/spot
SPRING_DATASOURCE_USERNAME: test1234
SPRING_DATASOURCE_PASSWORD: test1234
```
해결해서 여기에 남길게.
infrastructure/jpa/src/main/resources/application-jpa.yaml -> 아래 내용을 h2가 아닌 mysql 버전으로 다시 작성!! spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:spot
username: sa
password:
jpa:
database: h2
hibernate:
ddl-auto: create
database-platform: org.hibernate.dialect.H2Dialect
open-in-view: false
defer-datasource-initialization: true
h2:
console:
enabled: true
path: /h2-console
infrastructure/jpa/build.gradle.kts
dependencies {
implementation(project(":domain"))
implementation(project(":usecase"))
// spring
implementation("org.springframework.boot:spring-boot-starter-data-jpa:_")
runtimeOnly("com.mysql:mysql-connector-j")
}
tasks.bootJar { enabled = false }
tasks.jar { enabled = true } 2. Dockerfile 아래와 같이 수정
3. docker-compose.yml
# docker-compose.yml
services:
mysql:
container_name: SPOT-db
image: mysql:8 # 선호하는 버전 있을 경우 선정 예정!
ports:
- 3306:3306 # 혹시나 기존에 MySQL 사용 중일 경우 앞자리를 다른 포트로 바꿔야함.
volumes:
- ./db/mysql/data:/var/lib/mysql # 기존 데이터 파일과 격리를 위해 db/mysql/data 로 설정함!
command:
- '--character-set-server=utf8mb4'
- '--collation-server=utf8mb4_unicode_ci'
environment:
TZ : "Asia/Seoul"
MYSQL_ROOT_PASSWORD: test1234 # 임시 비밀번호
MYSQL_DATABASE: spot # DB 이름 선정 시 변경 예정.
MYSQL_USER: test1234 # 임시 유저
MYSQL_PASSWORD: test1234 # 임시 비밀번호
server:
build: . # 디렉토리에 있는 도커파일 이용해서 이미지 빌드
container_name: spot-server-docker
ports:
- 8080:8080
depends_on: # 항상 mysql 실행하고 서버 실행되게 함.
- mysql
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/spot
SPRING_DATASOURCE_USERNAME: test1234
SPRING_DATASOURCE_PASSWORD: test1234 |
@pminsung12 요거 로컬에서 잘 돌아가면 너가 바로 여기 브랜치에 커밋 찍어주는거 어때?! |
커밋찍었어요~ 테스트 해주세요! @wjdwnsdnjs13 @EunjiShin |
어머나 뭐지... 알람 실수로 껐나봐
사실 나도 jdk가 편할 거라 생각했는데, 우리 처음 회의했을 때 ubuntu 기반으로 하기로 작성해놨던 거 때문에 우분투 했던거야 ㅋㅋ
윈도우도 환경 변수 설정이랑 포트 변경만 하면 다 돌아가는 거 확인했어! 땡큐땡큐~~ |
@pminsung12 @wjdwnsdnjs13 둘다 고생했어! 근데 지금도 안돌아간다 ^.ㅜ
docker-compose에 사용된 depends_on은 컨테이너가 시작하는 순서만 지정해주지, 실행 가능한 상태까지 기다려주지는 않는 걸로 알고있어.
요런 이슈를 해결하기 위해서 이것저것 방법이 있는 것으로 알고있는데..! 그거 함 찾아보고 적용해줄래? (! 혹시 너희 로컬에서 재현 안되면 말해줘~ 내가 쓱 추가할게!) |
decorator: | ||
datasource: | ||
p6spy: | ||
enable-logging: true |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이거 지워진거는 다시 추가해줘!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다시 추가 완료! 확인해줘 ㅎㅎ
healthcheck로 해봤는데 됐을까?? |
잘 된다! 컨테이너 이름 db라고만 하면 헷갈릴 것 같아서 좀 더 직관적으로 바꿨어! approve 해주면 머지할게! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! ✨
변경사항: docker-compose up --build를 할 때 gradle build 추가쉘 스크립트 명령어맨 처음 pull 받고 초기설정할 때 or 의존성 변경이나 도커 설정 변화 등 큰 변화 : 빠른 개발을 위한 팁#!/bin/bash
docker-compose restart server
docker-compose logs -f server 위와 같은 sh파일을 프로젝트 루트 파일에 놓고 팀원마다 운영체제가 달라서 git에 포함시키지 않았어~ 쓸 사람은 각자 정의해서 쓰면 될 듯! |
📌 개요 (필수)
🔨 작업 사항 (필수)
⚡️ 관심 리뷰 (선택)