반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JPA
- 프로그래머스
- 플러터 공부
- 코테준비
- JPA공부
- JPA스터디
- nestjs
- 기술면접공부
- nestjs공부
- 기술공부
- Axon framework
- DDD
- JPA예제
- 자바공부
- nestjs스터디
- Kafka
- 알고리즘공부
- 스프링부트공부
- 카프카
- 스프링
- K8S
- Flutter
- 자료구조공부
- JPA 공부
- 스프링부트
- 스프링 공부
- 코테공부
- querydsl
- 스프링공부
- 플러터 개발
Archives
- Today
- Total
DevBoi
[Aws] Docker-compose 구성하기 본문
반응형
기존에는 Aws Mariadb를 별도로 구성해서 사용했는데, 이제 Ec2에서 app, mariadb 두개의 컨테이너를 띄우고 사용할 것이다.
구조는 이렇다.
로컬에서 도커파일을 빌드해서 이미지를 Docker hub로 올리고
docker-compose 파일을 수정해준다.
ec2에 scp로 docker-compose 파일을 보내고(추후에는 vi로 직접 수정)
해당 docker-compose 파일로 빌드 및 컨트롤한다.
1) DockerFile
FROM openjdk:17-alpine
ARG JAR_FILE=/build/libs/boiler-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} /boiler.jar
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod", "/boiler.jar"]
2) 도커 빌드 및 hub push
docker build --platform linux/amd64 -t dbtjdwocjswo/boiler:0.0.1 -f ./DockerFile .
docker push dbtjdwocjswo/boiler:0.0.1
3) local prod 환경 프로파일 분리
application-prod
spring:
config:
activate:
on-profile: "prod"
datasource:
url: ${SPRING_DATASOURCE_URL}
username: ${SPRING_DATASOURCE_USERNAME}
password: ${SPRING_DATASOURCE_PASSWORD}
driver-class-name: org.mariadb.jdbc.Driver
jpa:
open-in-view: false
generate-ddl: true
show-sql: true
hibernate:
ddl-auto: create
server:
servlet:
context-path=/:
docker-compose
version: "3.2"
services:
database:
container_name: database
image: mariadb
volumes:
- ~/docker/mariadb/etc/mysql/conf.d:/etc/mysql/conf.d:ro
- ~/docker/mariadb/var/lib/mysql:/var/lib/mysql
- ~/docker/mariadb/var/log/maria:/var/log/maria
environment:
- MYSQL_DATABASE=db1
- MYSQL_ROOT_PASSWORD=1234
- MYSQL_ROOT_HOST=%
command: ['--character-set-server=utf8mb4','--innodb-read-only-compressed=OFF','--collation-server=utf8mb4_unicode_ci','--transaction-isolation=READ-COMMITTED']
ports:
- 3306:3306
networks:
- spring-network
backend:
image: dbtjdwocjswo/boiler:0.1.0
environment:
SPRING_DATASOURCE_URL: jdbc:mariadb://database:3306/db1?useUnicode=true
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: 1234
ports:
- 8080:8080
depends_on:
- database
networks:
- spring-network
networks:
spring-network:
DB와 스프링 관련 네트워크를 묶고
Spring properties에 들어가는 변수를 compose파일에서 적어두고,
미리 빌드해서 푸쉬한 이미지를 컨테이너로 띄운다.
이렇게 되면 실제 서버에서는 Docker-compose파일만으로 컨테이너를 사용할 수 있다.
compose file - scp 전달
scp -i ~/.ssh/honey-bit.pem docker-compose.yaml ubuntu@13.125.233.255:~/
ec2 docker compose 설치 및 compose 파일 실행
sudo apt install docker-compose
docker-compose up -d
정상적으로 동작한다.
배포 및 관리는
로컬 -> 도커 이미지 빌드 및 푸쉬
서버 -> docker compose 파일 내 vi 로 이미지 버전 수정 및 compose 재기동
이런 방식으로 관리를 진행 할 예정이다.
mariadb 파일 저장 및 영속성관리에 대해서는 추후 포스팅 예정이다.
반응형
'Infra > [AWS]' 카테고리의 다른 글
[AWS] Mariadb 한글 인코딩 이슈 (1) | 2023.10.07 |
---|---|
[AWS] Mariadb encoding 오류 (1) | 2023.10.02 |
[AWS] Docker 이미지 ECR에 올리기 (0) | 2023.06.08 |
[AWS] S3 구성 (0) | 2023.06.08 |
[AWS] Multiplatform Docker image를 빌드하는 법 (0) | 2023.05.28 |