나의 발자취

도커 컴포즈, Azure에 도커 yml 업로드해서 앱 배포하기 본문

Backend

도커 컴포즈, Azure에 도커 yml 업로드해서 앱 배포하기

달모드 2024. 11. 1. 17:04

지난 포스팅

Docker (1)

2024.11.01 - [Backend] - Docker에 대한 기본 개념 정리, Docker 기본 명령어 정리

 

Docker에 대한 기본 개념 정리, Docker 기본 명령어 정리

가상머신: 각각의 앱을 실행하기 위해 각각의 OS가 올라가므로 굉장히 무겁다.도커: Container Engine(Docker)이라는 SW를 설치해 개별 컨테이너가 생성되어 각 앱을 고립된 환경에서 실행할 수 있다.  

wildguess.tistory.com

 

 

Docker (2)

2024.11.01 - [Backend] - Dockerfile 문법, 도커 이미지 생성 도커 컨테이너 수명 주기, 도커 명령어

 

Dockerfile 문법, 도커 이미지 생성 도커 컨테이너 수명 주기, 도커 명령어

지난 포스팅의 Dockerfile 참고2024.11.01 - [Backend] - Docker에 대한 기본 개념 정리, Docker 기본 명령어 정리 Docker에 대한 기본 개념 정리, Docker 기본 명령어 정리가상머신: 각각의 앱을 실행하기 위해 각

wildguess.tistory.com

 

 


이제까지 우리는 하나의 앱을 다루고 실행했었다. 잠깐 지난 발행글에서 공부한 도커의 개념을 정리해본다.

 

  • Docker는 애플리케이션 배포 전용 컨테이너다.
  • Docker 컨테이너 = 단일 애플리케이션
  • 실용적인 시스템 구축:
    • 애플리케이션간 연동
    • 하나 이상의 컨테이너가 서로 통신 하며, 의존 관계 형성
    • 컨테이너 동작 제어를 위한 설정파일이나 환경 변수 전달
    • 컨테이너 의존관계를 고려한 포트 포워딩 설정

 

자, 그런데 하나가 아니라 여러개의 컨테이너를 돌리려면?

 

Docker Compose

 

Docker Compose는 여러 개의 컨테이너로 구성된 애플리케이션을 정의하고 관리하기 위해 사용된다.

 

 

 

 

docker-compose.yml 

yml 문서에 기술한 설정으로, 여러 컨테이너 실행을 관리할 수 있다. Docker Compose는 복잡한 애플리케이션을 더 쉽게 관리하고 배포하는 데 매우 유용하다.

 

 

docker-compose.yml

 

<주의!> 맥 실리콘칩 docker yml 안되는 경우, 

해당 파일에 platform: linux/amd64를 넣어주어야 한다.!!!

version: '3.3'

services:
   db:
     platform: linux/amd64
     image: library/mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

docker-compose.yml 기본 구성 요소 

  • Version – yml 해석 문법 버전
  • Services – 실행 서비스 정의
  • 서비스 이름 – ex) db
    • image – Docker 이미지
    • ports - 포트 포워딩 설정
    • links – 참조할 다른 컨테이너
    • environment – 컨테이너 실행 환경변수
    • build – Dockerfile 상대 경로
    • volumes – 호스트와 컨테이너 사이의 파일 공유, 상대경로 가능
    • depends_on – 서비스가 하나 이상일 때 실행 의존성 지정

 


 

시작.

 

 

도커 컴포즈 버전 확인

일단 도커 컴포즈가 있는지 봐야한다.

docker-compose --version

 

 docker search mysql:5.7-arm64

 

 

detached 모드에서 yml 실행

그리고 나서 아래 명령어 실행

#1. detached 모드에서 yml 실행
docker-compose up -d

 

그럼 DB도 풀링되고 막 돌아간다.

 

최종적으로 완료되었을 때 모습

 

아래와 같은 이미지들이 돌아가고 있다.

 

그리고 야믈에 정의된대로, localhost 8000으로 가준다.

 

그럼 현재 실행하려는 이미지 파일이 로컬에 없으므로 야믈 파일의 명령어가 docker hub에서 이미지 파일을 가지고 와서 실행하게 되고, 최종적으로 아래와 같이 창이 확인되는 것이다!

 

실행중인 서비스 중지 / 서비스 삭제

#3. 실행 중인 서비스 중지
docker-compose stop

#4. 서비스 삭제
docker-compose down

 

 

종료된 것 확인

이미지는 그대로 유지되기 때문에, 이제 이미지가 로컬에 있으므로 다시 가져올 필요가 없게 된다. 

 

 

 

docker-compose 명령어

주요 명령어

  • up - 이미지 가져오거나/빌드, 실행
    • 서비스에 사용할 네트워크 설정
    • 필요한 볼륨 생성
    • 이미지 가져오기(pull)
    • 이미지 빌드 (--build)
    • 서비스 의존성에 따라 서비스 실행
    • -d: 백그라운드 실행
    • --force-recreate: 컨테이너를 지우고 새로 만듦

상태 확인 및 제어

  • ps – 현재 환경에서 실행 중인 서비스 표시
  • stop, start – 서비스 중지 또는 시작
  • down – 서비스 삭제 (컨테이너, 네트워크, 볼륨)
  • exec – 실행 중인 컨테이너에 명령 실행
  • logs – 서비스의 로그 확인

Azure에서 앱 생성하여 docker 이미지 파일 올리기

 

1. 만들기를 눌러서 앱 서비스를 만든다.

 

2. 아래와 같이 이름은 망므대로, 게시는 '컨테이너', 운체는 'linux'로 해준다. 지역은 Korea Central로 설정

 

container에서, linux: 어쩌구 파일은 맥 실리콘칩때문에 추가해준거라 이걸 없애고 업로드를 해줘야한다.

 

그래서 그냥 복제하고 업로드용은 심플하게 docker-conpose.yml로 네이밍해주었다.

 

업로드하면 이와 같이 된다.

 

3. 검토 + 배포 클릭

 

 

 

 

 

확인

방금 만든 앱 이름을 검색해서 들어간다! 

 

 

로딩이 완료되면, 기본 도메인을 클릭해본다.

 

아까와 같이, 야믈파일이 잘 배포된것이 확인된다!

Comments