Zeno ZENO
Docker / Docker-Basic · 조회 4 · 좋아요 0

Part 20. Laravel과 MySQL을 Docker Compose로 함께 실행하기

이번 글에서는 Laravel과 MySQL을 Docker Compose로 함께 실행하는 구조를 알아본다. app 서비스와 db 서비스가 어떻게 연결되는지 이해한다.

Part 20. Docker Compose로 여러 컨테이너 함께 실행하기

1. 이번 Part 목표

지금까지는 MySQL 컨테이너 하나만 실행했다.

하지만 실제 서비스는 여러 컨테이너가 함께 동작한다.

이번 Part에서는 Docker Compose가 왜 필요한지 알아본다.


2. 컨테이너 하나만으로는 부족하다

웹 서비스는 보통 하나의 프로그램만 사용하는 것이 아니다.

웹 애플리케이션

↓

데이터베이스

↓

캐시 서버

여러 프로그램이 함께 동작한다.


3. 예시 구조

app

↓

db

app은 웹 애플리케이션이다.

db는 데이터베이스다.


4. Docker Compose의 역할

Docker Compose는 여러 컨테이너를 한 번에 관리한다.

docker compose up

한 명령어로 여러 서비스를 실행할 수 있다.


5. 서비스(Service)란?

Compose에서는 컨테이너를 서비스라고 부른다.

services:

  app:

  db:

각 서비스는 하나의 역할을 담당한다.


6. app 서비스

웹 애플리케이션을 실행하는 컨테이너다.

services:

  app:

PHP, Node.js, Python 등이 들어갈 수 있다.


7. db 서비스

데이터를 저장하는 컨테이너다.

services:

  db:

MySQL, PostgreSQL 등이 사용된다.


8. 컨테이너끼리 통신하기

Docker Compose는 자동으로 네트워크를 생성한다.

같은 Compose 안의 서비스들은 서로 통신할 수 있다.


9. 서비스 이름이 주소가 된다

AD

제휴 광고 · 일부 링크는 수수료를 받을 수 있습니다

패널파워 - 설문조사로 돈 버는 습관
services:

  db:

서비스 이름이 db라면 주소도 db가 된다.


10. 왜 localhost가 아닐까?

컨테이너 안에서 localhost는 자기 자신을 의미한다.

app

↓

localhost

↓

app 자신

따라서 다른 컨테이너를 찾을 수 없다.


11. 올바른 연결 방식

DB_HOST=db

db 서비스로 접속하라는 의미다.


12. Compose 예시

services:

  app:
    build: .

  db:
    image: mysql:8.4

app과 db가 함께 실행된다.


13. 실행 과정

docker compose up

↓

app 실행

↓

db 실행

↓

서로 연결

14. 왜 중요한가?

실제 서비스는 여러 프로그램이 함께 동작한다.

Docker Compose는 이를 하나의 프로젝트처럼 관리하게 해준다.


15. Part 20 정리

service
=
컨테이너 단위

app
=
애플리케이션

db
=
데이터베이스

docker compose up
=
모든 서비스 실행

DB_HOST=db
=
db 서비스 접속

다음 Part에서는 Laravel Migration 자동화 개념을 알아본다.

AD

제휴 광고

일부 링크는 제휴 링크이며, 구매 또는 가입 시 일정 수수료를 받을 수 있습니다.

AD

'Docker-Basic' 카테고리의 다른 글

전체보기