배포, 운영/Infra

[Infra] Docker 세팅 및 Mysql, Jenkins, SpringBoot 컨테이너 생성

Ash_jisu 2025. 3. 13. 23:37

Docker 명령어 모음

  • 항상 이미지 삭제 → 볼륨(데이터 삭제) 순서
  • 이미지: 애플리케이션, 볼륨: 애플리케이션의 데이터 라고 이해하면 쉬움
# 실행 종료
sudo docker stop <컨테이너_ID 또는 컨테이너_이름>

# 모든 실행중인 컨테이너 종료
sudo docker stop $(docker ps -q)

# 컨테이너 제거
sudo docker rm mysql-server

# docker 볼륨 목록 확인
sudo docker volume ls

# docker 볼륨 삭제
sudo docker volume rm ubuntu_mysql_data

# 텍스트 에디터 
nano docker-compose.yml

# 등록된 컨테이너 확인(실행 안한 컨테이너도 포함)
sudo docker ps -a
  • 실행 관련
# 개별 실행
sudo docker-compose up -d <서비스명>

# 전체 실행
sudo docker-compose up -d

# 실행확인
sudo docker ps

Docker Compose 설치

# docker 설치
sudo apt install -y docker.io 

# docker 실행 및 실행 확인
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

# 버전 지정 및 설치(2.32.4), uname -s: os이름 출력, uname -m: 하드웨어 이름 출력(x86_64 등)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose

 


Docker-compose 작성

  • 총 3개: jenkins, mysql, SpringBoot 실행 로직과 연결된 컨테이너
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    ports:
      - "9090:8080"
      - "50000:50000"
    environment:
      TZ: "Asia/Seoul"
    volumes:
      - jenkins_data:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock

	springboot:
    build:
      context: /home/ubuntu/backend   # jar 파일과 Dockerfile이 있는 디렉토리
      dockerfile: Dockerfile
    container_name: springboot-app
    ports:
      - "8080:8080"  
    environment:
	    TZ: "Asia/Seoul"

  mysql:
    image: mysql:8.0
    container_name: mysql-server
    environment:
      MYSQL_ROOT_PASSWORD: "{root_password}"
      MYSQL_DATABASE: "{database_name""
      MYSQL_USER: "{user_name}"
      MYSQL_PASSWORD: "{user_password}"
      TZ: "Asia/Seoul" 
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

volumes:
  jenkins_data:
  mysql_data:
  • Spring Boot 실행 로직 담은 Dockerfile 작성(nano로 작성)
    • 해당 실행은 Docker-compose의 컨테이너 실행시 작동
# 베이스 이미지로 Java 17 런타임을 포함하는 슬림 이미지를 사용합니다.
FROM openjdk:17-jdk-slim

# 작업 디렉토리를 /app으로 설정합니다.
WORKDIR /app

# 여기서 'gogoma-0.0.1-SNAPSHOT.jar' 파일 이름은 실제 jar 파일 이름에 맞게 수정하세요.
COPY gogoma-0.0.1-SNAPSHOT.jar app.jar

# 컨테이너가 시작될 때 실행할 명령을 지정합니다.
ENTRYPOINT ["java", "-jar", "app.jar"]