MSA & 쿠버네티스(Kubernetes) - k8s

Docker compose 사용하기

Junuuu 2022. 9. 4. 00:01
반응형

 

Docker Compose 없이 이미지 컨테이너화

 

아래의 명령어들을 사용하게 되면 wordpress_net이라는 이름의 network를 구성하고 mysql과 wordpress 이미지를 컨테이너화 시킵니다.

docker network create wordpress_net
docker run --name "db" -e "MYSQL_ROOT_PASSWORD=123456" -e "MYSQL_DATABASE=wordpress" -e "MYSQL_USER=wordpress_user" -e "MYSQL_PASSWORD=123456" --network wordpress_net mysql:5.7
docker run --name app -e "WORDPRESS_DB_HOST=db" -e "WORDPRESS_DB_USER=wordpress_user" -e "WORDPRESS_DB_NAME=wordpress" -e "WORDPRESS_DB_PASSWORD=123456" -e "WORDPRESS_DEBUG=1" -p 8080:80 --network wordpress_net wordpress:latest

 

 

localhost:8080으로 접속하면 다음과 같은 화면을 볼 수 있습니다.

localhost:8080

 

하지만 이런 복잡한 명령어들을 기억하고 일일이 작성하는 것은 힘듭니다.

 

docker-compose를 이용하면 이런 단점들을 해결할 수 있습니다.

 

Docker Compose 사용하기

docker-compose.yml이라는 파일을 생성합니다.

version: "3.7"

services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress_user
      MYSQL_PASSWORD: 123456
  
  app:
    depends_on: 
      - db
    image: wordpress:latest
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress_user
      WORDPRESS_DB_PASSWORD: 123456

version을 명시해주어야 합니다.

sevices 안에는 컨테이너들이 들어옵니다.

db는 mysql 5.7 이미지의 이름을 뜻합니다.

 

컨테이터의 데이터 유실을 방지하기 위해 데이터를 host에 저장하고 이를 volumes를 활용하여 컨테이너와 연결시킬 수 있습니다.

 

환경변수들은 environment를 활용하여 설정해줄 수 있습니다.

 

depends_on은 어떤 컨테이너가 먼저 만들어질지 설정할 수 있습니다.

 

 

docker compose를 사용하면 네트워크를 연결하는 작업을 수행할 필요가 없습니다.

 

 

 

아래의 명령어를 통해 docker-compsose.yml 파일을 생성할 수 있습니다.

notepad docker-compose.yml

 

아래의 명령어를 통해 docker-compose.yml 파일을 찾고 그 파일의 명령어들을 실행합니다.

docker-compose up

localhost:8080에 접속하면 wordpress 화면이 나오게 됩니다.

 

 

아래의 명령어를 통해 docker-compose로 실행된 컨테이너들을 내릴 수 있습니다.

docker-compose down

 

 

 

 

 

 

출처

https://www.youtube.com/watch?v=EK6iYRCIjYs&t=61s