SW/Kubernetes, Docker

Laravel 개발환경, 로컬 설치 없이 Docker로 빠르게 구축하는 법

얇은생각 2025. 9. 26. 07:30
반응형

로컬에 아무것도 없어도 괜찮아! Docker로 Laravel 환경 쉽게 만들기

 


 

처음부터 아무것도 설치돼 있지 않은 상태에서 개발을 시작하려고 하면 진짜 머리 하얘져요.

PHP도 없고, Composer도 없고, Laravel은 더더욱 없고... 뭘 어디서부터 어떻게 해야 할지 막막하죠. 저도 그랬어요.

근데 다행히도, 전부 다 설치할 필요 없어요. 진심입니다. 그냥 Docker만 있으면 돼요. 그걸로 우리가 필요한 개발 환경을 싹 만들어버릴 수 있거든요. 완전히 분리된 컨테이너 안에서 모든 게 돌아가니까 시스템이 더러워질 일도 없고요.

이번엔 제가 직접 해보고 정리한 Laravel 개발 환경 구축 과정을 하나씩 공유해볼게요. 진짜 개발에만 집중할 수 있는 환경, 함께 만들어봐요!

 


 

1단계: docker-compose.yml부터 만들어보자

 

1단계: docker-compose.yml부터 만들어보자

시작은 단순해요. 프로젝트 폴더 안에 docker-compose.yml 파일 하나 만들고요.

이 파일이 여러 개의 컨테이너가 어떻게 움직일지 정해주는 지휘자 역할을 하죠.

파일에는 이렇게 적어주면 됩니다:

version: "3.8"
services:

 

자, 이제 컨테이너들을 하나씩 추가해볼게요. 마치 퍼즐 맞추듯이요.

 


 

2단계: 웹 서버는 Nginx로

들어오는 요청을 처음으로 받아주는 친구가 바로 Nginx예요. 가볍고 빠르기도 해서 자주 쓰이죠.

공식 이미지 중 nginx:stable-alpine을 선택했어요. 가볍고 안정적이라 좋아요.

  server:
    image: "nginx:stable-alpine"
    ports:
      - "8000:80"

 

이렇게 하면 localhost:8000에서 웹사이트가 열리게 됩니다. 처음 열릴 때 약간 감동이 오죠.

그다음엔 nginx라는 폴더를 하나 만들고 default.conf 파일을 추가해줍니다. 이건 Nginx가 PHP 파일을 어떻게 처리할지 알려주는 설정이에요.

마운트는 이렇게 해요:

    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro

 

읽기 전용이라서 실수로 수정되는 일도 없고, 깔끔하죠.

 


 

3단계: PHP 컨테이너 커스터마이징하기

 

3단계: PHP 컨테이너 커스터마이징하기

Laravel은 단순한 PHP로는 안 됩니다. 몇 가지 확장 모듈이 꼭 필요해요. 그래서 그냥 기본 PHP 이미지를 쓰는 게 아니라, 우리가 필요한 걸 추가해서 커스텀 이미지로 만들어야 해요.

먼저 dockerfiles라는 폴더를 만들고, 그 안에 php.dockerfile이라는 파일을 만들어주세요.

내용은 아주 간단합니다:

FROM php:7.4-fpm-alpine
RUN docker-php-ext-install pdo pdo_mysql
WORKDIR /var/www/html

 

이제 docker-compose.yml에 이걸 연결해줍니다:

  php:
    build:
      context: ./dockerfiles
      dockerfile: php.dockerfile
    volumes:
      - ./src:/var/www/html:delegated

 

./src 폴더는 Laravel 소스를 넣을 폴더예요. 아직은 비어있지만 곧 가득 찰 거예요.

 


 

4단계: Nginx랑 PHP 연결해주기

default.conf 안에서 이렇게 써주면 돼요:

fastcgi_pass php:9000;

 

Docker Compose에서는 각 서비스 이름으로 서로를 부를 수 있어서, php라는 이름을 그대로 쓰면 됩니다. 따로 포트를 외부에 노출할 필요도 없고요.

 


 

5단계: Composer 설치 없이 Composer 쓰기

 

5단계: Composer 설치 없이 Composer 쓰기

Laravel은 Composer 없으면 안 되죠. 근데 굳이 로컬에 설치 안 해도 돼요. 그냥 Docker로 한 번에 처리할 수 있어요.

한 줄이면 충분해요:

docker run --rm -v $(pwd)/src:/app composer install

 

이렇게 하면 src 폴더에 필요한 패키지가 싹 설치돼요. 마치 마법처럼요.

 


 

6단계: Node도 Docker로 처리하자

프론트엔드 자산 빌드할 때도 Node가 필요하잖아요. npm이나 vite 같은 거 돌릴 때요. 그것도 Docker로!

docker run --rm -v $(pwd)/src:/app -w /app node:18 npm install && npm run dev

 

이렇게 하면 로컬 Node 안 깔아도 다 됩니다. 저는 이 방식 쓰고 나서 Node 버전 충돌로 스트레스받는 일 진짜 줄었어요.

 


 

7단계: Artisan도 잘 돌아가요

Laravel 개발하다 보면 Artisan CLI 자주 쓰게 돼요. 마이그레이션, 시드, 캐시 클리어 등등.

PHP 컨테이너 안에서 바로 이렇게 실행하면 됩니다:

docker-compose exec php php artisan migrate

 

코드가 연결돼 있으니까 문제 없이 돌아가요. 처음 실행됐을 때 뭔가 뿌듯합니다.

 


 

8단계: MySQL도 당연히 컨테이너로

Laravel에서 DB는 거의 필수니까요. MySQL 컨테이너도 같이 설정해줄게요:

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: laravel
    volumes:
      - dbdata:/var/lib/mysql

 

그리고 아래쪽에 볼륨도 꼭 추가해주세요:

volumes:
  dbdata:

 

이제 .env 파일에서 DB_HOST=db로 설정하면 Laravel이 이 MySQL 컨테이너랑 연결돼요. 진짜 신기하죠.

 


 

왜 이 방법을 추천하냐고요?

처음엔 좀 복잡해 보일 수 있어요. 하지만 한 번만 제대로 세팅해두면, 그다음부터는 정말 편해요.

  • 팀원들과 공유해도 다 똑같은 환경
  • 로컬에 아무것도 안 깔아도 작동
  • Redis, Horizon 같은 것도 쉽게 추가 가능
  • 환경 충돌 없이 쾌적하게 개발 가능

전 이거 세팅해두고 나서 개발이 훨씬 자유로워졌어요. 망가질까 걱정도 없고, 새로운 프로젝트도 뚝딱 시작할 수 있고요.

Docker가 귀찮을 수도 있지만, 익숙해지면 정말 든든한 친구가 됩니다. 이제 여러분 차례예요. 코드에만 집중하세요. 환경은 Docker가 다 해줄 거예요.

반응형