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

Part 21. Laravel Migration 자동화 이해하기

Part 21. Laravel Migration 자동화 이해하기

1. 이번 Part 목표

지난 Part에서는 Docker Compose로 여러 컨테이너를 함께 실행하는 구조를 알아보았다.

이번 Part에서는 Laravel 프로젝트에서 데이터베이스 테이블을 어떻게 생성하고 관리하는지 알아본다.

핵심은 Migration이다.


2. 현재까지 배운 구조

app

↓

db

app은 웹 애플리케이션 컨테이너다.

db는 MySQL 같은 데이터베이스 컨테이너다.

웹 애플리케이션은 데이터를 저장하거나 조회할 때 db 컨테이너와 통신한다.


3. 데이터베이스만 있다고 끝이 아니다

MySQL 컨테이너를 실행하면 데이터베이스 서버는 준비된다.

하지만 그 안에 테이블이 자동으로 생기는 것은 아니다.

데이터베이스 생성

↓

테이블 없음

데이터를 저장하려면 테이블 구조가 필요하다.


4. 테이블이란?

테이블은 데이터를 저장하는 표다.

예를 들어 회원 정보를 저장하려면 users 테이블이 필요하다.

users

id | name | email

1  | kim  | kim@example.com

게시글을 저장하려면 posts 테이블이 필요하다.


5. 직접 SQL로 만들 수도 있다

MySQL에서는 직접 SQL을 작성해 테이블을 만들 수 있다.

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(100)
);

하지만 프로젝트가 커질수록 테이블을 직접 관리하기 어렵다.


6. Laravel Migration이란?

Migration은 데이터베이스 테이블 구조를 코드로 관리하는 Laravel 기능이다.

쉽게 말하면 테이블 설계도다.

Migration 파일

↓

Laravel이 읽음

↓

테이블 생성

7. Migration 파일은 어디에 있을까?

Laravel 프로젝트에서는 보통 다음 폴더에 Migration 파일이 있다.

database/migrations

이 폴더 안에 테이블 생성 규칙이 코드로 저장된다.


8. Migration 예시

Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email');
    $table->timestamps();
});

이 코드는 users 테이블을 만드는 설계도다.

Laravel은 이 코드를 읽고 실제 SQL로 변환하여 MySQL에 테이블을 생성한다.


9. php artisan migrate란?

AD

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

톨루나 팝업패널리워드 회원가입

php artisan migrate

이 명령어는 Laravel Migration을 실행한다.

즉 Migration 파일을 읽고 데이터베이스에 테이블을 생성하거나 변경한다.

Migration 파일

↓

php artisan migrate

↓

DB 테이블 생성

10. Docker 환경에서는 왜 중요할까?

Docker로 MySQL 컨테이너를 새로 만들면 처음에는 테이블이 없을 수 있다.

이때 애플리케이션 컨테이너에서 Migration을 실행해야 한다.

docker compose up

↓

MySQL 실행

↓

Laravel 실행

↓

php artisan migrate

↓

테이블 생성

11. --force 옵션이란?

php artisan migrate --force

--force 옵션은 확인 질문 없이 Migration을 실행하도록 한다.

자동 배포나 컨테이너 시작 스크립트에서 자주 사용된다.

다만 실제 운영 환경에서는 프로젝트 상황에 맞게 신중하게 사용해야 한다.


12. 자동화가 필요한 이유

개발자가 매번 직접 테이블을 만들면 실수가 생길 수 있다.

Migration을 자동화하면 같은 테이블 구조를 반복해서 만들 수 있다.

개발 환경

테스트 환경

운영 환경

각 환경에서 같은 DB 구조를 유지하기 쉽다.


13. Docker Compose와 Migration

Docker Compose에서는 app 컨테이너와 db 컨테이너를 함께 실행할 수 있다.

services:

  app:

  db:

app 컨테이너에서 Laravel 명령어를 실행하고, db 컨테이너에 테이블을 생성하는 구조다.


14. 컨테이너 시작 스크립트 예시

일부 프로젝트에서는 컨테이너가 시작될 때 Migration을 실행하도록 구성한다.

php artisan migrate --force

↓

서비스 시작

단, 모든 프로젝트가 반드시 이렇게 구성되는 것은 아니다.

개발 환경, 운영 환경, 배포 방식에 따라 다르게 구성할 수 있다.


15. Migration이 없으면?

애플리케이션은 테이블이 있다고 가정하고 동작한다.

그런데 실제 DB에 테이블이 없으면 오류가 발생한다.

users 테이블 없음

↓

로그인 기능 오류

posts 테이블 없음

↓

게시글 조회 오류

16. Part 21 정리

Migration
=
테이블 설계도

database/migrations
=
Migration 파일 위치

php artisan migrate
=
Migration 실행 명령어

--force
=
확인 없이 실행

Docker 환경
=
app 컨테이너에서 Migration 실행 후 db에 테이블 생성

다음 Part에서는 PHP-FPM과 Nginx가 어떤 역할을 하는지 알아본다.

AD

제휴 광고

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

AD

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

전체보기