Infra/[AWS]
[Aws] Docker-compose 구성하기
HiSmith
2023. 7. 30. 17:17
반응형
기존에는 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 파일 저장 및 영속성관리에 대해서는 추후 포스팅 예정이다.
반응형