도커에 Nginx + Laravel 를 실행시키는 가장 기본 형태의 도커 파일에 대해서 알아본다.
필수사항
1. docker 설치
https://docs.docker.com/engine/install/
2. composer 설치
3. docker compose 설치
https://docs.docker.com/compose/install/
composer 가 설치되어 있다면 도커홈에서 Docker Desktop 만 설치하면 됨.
GitHub 에서 다운로드 하는 경우
1. local PC 에서 실행하기
git clone https://github.com/ssh521/laravel-nginx-docker.git laravel-nginx-docker
cd laravel-nginx-docker
cp .env.example .env
composer install
php artisan key:generate
touch database/database.sqlite
php artisan migrate
php artisan serve
http://127.0.0.1:8000
2. Docker 에서 실행하기
docker compose up -d
http://localhost:8090
직접 실습하기
터미널에서 원하는 작업 폴더로 이동한다.
라라벨 프로젝트 다운로드
composer create-project laravel/laravel laravel-nginx-docker
cd laravel-nginx-docker
> composer 가 설치되어 있어야 함.
폴더 및 파일 추가하기
.
├── Dockerfile
├── docker-compose.yaml
└── nginx
└── default.conf
> 설치된 laravel-nginx-docker 폴더에 아래의 내용을 추가한다.
Dockerfile 파일 만들기
# use PHP 8.2
FROM php:8.2-fpm
# Install common php extension dependencies
RUN apt-get update && apt-get install -y \
libfreetype-dev \
libjpeg62-turbo-dev \
libpng-dev \
zlib1g-dev \
libzip-dev \
unzip \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install zip
# Set the working directory
COPY . /var/www/app
WORKDIR /var/www/app
RUN chown -R www-data:www-data /var/www/app \
&& chmod -R 775 /var/www/app/storage
# install composer
COPY --from=composer:2.6.5 /usr/bin/composer /usr/local/bin/composer
# copy composer.json to workdir & install dependencies
COPY composer.json ./
RUN composer install
# Set the default command to run php-fpm
CMD ["php-fpm"]
nginx/default.conf 추가하기
server {
listen 80;
server_name localhost;
root /var/www/app/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
docker-compose.yaml 만들기
version: "3"
networks:
laravel:
driver: bridge
services:
nginx:
image: nginx:alpine
container_name: nginx
restart: unless-stopped
tty: true
ports:
- "8090:80"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- .:/var/www/app:delegated
depends_on:
- php
networks:
- laravel
php:
build:
context: .
dockerfile: Dockerfile
container_name: php
restart: unless-stopped
tty: true
expose:
- "9000"
volumes:
- .:/var/www/app:delegated
networks:
- laravel
실행하기
docker compose up -d
접속하기
http://localhost:8090/
내리기
docker compose down
'Docker' 카테고리의 다른 글
Docker > Solving SQLSTATE[HY000] [1045] Access Denied Error (0) | 2025.01.29 |
---|---|
var/www/app:delegated 에 대해서 (0) | 2025.01.24 |
도커에서 laravel 프로젝트 다운로드 하기 (0) | 2025.01.23 |
Dockerfile 이란? - 실습하기 (0) | 2025.01.23 |
8.2-fpm과 8.2-fpm-alpine 차이점 (0) | 2025.01.21 |