Published on

ลองสร้าง Project Laravel ใส่ใน Nginx ใน Docker

ลองสร้าง project laravel ใส่ใน nginx ใน docker
ลองสร้าง project laravel ใส่ใน nginx ใน docker

อันยองงงงฮาเซโยวว ไฟในการเขียนบทความกำลังมา เลยต้องเขียนบทความสักหน่อย ^^

บทความวันนี้อย่างที่เกริ่นไปคือเราจะเอาโปรเจคที่ใช้ Laravel มาใส่ใน Docker จริง ๆ ก็ต่อยอดมาจากบทความก่อนหน้าได้นะครับ (ลองสร้าง project php หลายตัวใส่ใน nginx ใน docker)

เป้าหมายสุดท้ายของบทความนี้คืออยากให้ใช้คำสั่ง docker-compose up แล้ว Run โปรเจค Laravel ได้เลย

มาเริ่มกันเลย

ขั้นตอนแรกเจมส์จะสร้าง Project เปล่าๆ ขึ้นมาก่อนครับ แล้วก็เข้าไปใน directory ที่เราสร้าง

mkdir laravel-on-docker
cd laravel-on-docker

เตรียมโปรเจค Laravel

จากนั้นเราจะสร้าง Project laravel ด้วยคำสั่ง

composer create-project laravel/laravel web

จากนั้นให้เข้าไปใน directory web ที่เราสร้าง จากนั้นสร้างไฟล์ Dockerfile ขึ้นมาครับ

cd ./web
touch Dockerfile

จากนั้นใส่โค้ดลงไปดังนี้ครับ

web/Dockerfile
# Use the official PHP image as the base image
FROM php:8.2.9-fpm

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zip \
    unzip \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd pdo pdo_mysql

จากนั้นให้ถอยออกมาอยู่ที่ root project ของเราก่อนครับ

cd ..

เตรียม Nginx

ในขั้นตอนของ Nginx ขั้นแรกเดี๋ยวเราสร้าง directory ชื่อ nginx ขึ้นมาก่อนเน้อครับ และเข้าไปใน nginx

mkdir nginx
cd nginx

จากนั้นเพิ่มไฟล์ชื่อ nginx.conf

touch nginx.conf

จากนั้นใส่ข้อมูลเข้าไปดังนี้ครับ

nginx/nginx.conf
server {
  listen 80;
  index index.php index.html;
  root /var/www/public;

  location / {
    try_files $uri /index.php?$args;
  }

  location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass web:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
  }
}

ในส่วน fastcgi_pass web:9000; ชื่อ web คือชื่อ service ที่อยู่ใน docker-compose เน้อครับ

จากนั้นให้ถอยออกมาที่ root project ของเราเหมือนเดิมครับ

cd ..

เตรียม docker-compose.yaml

ขั้นสุดท้ายเราจะสร้างไฟล์ชื่อ docker-compose.yaml ขึ้นมาครับ

touch docker-compose.yaml

จากนั้นใส่ข้อมูลดังนี้ครับ

docker-compose.yaml
version: '3'
services:
  web:
    build:
      context: ./web
      dockerfile: Dockerfile
    container_name: web-container
    restart: always
    working_dir: /var/www
    volumes:
      - ./web:/var/www

  nginx:
    image: nginx:1.19-alpine
    container_name: nginx-container
    restart: always
    ports:
      - 8080:80
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - ./web:/var/www

จากนั้นลองใช้คำสั่ง

docker-compose up

แล้วลองเข้าไปที่ http://localhost:8080 จะพบว่าสามารถเข้าได้แล้ว เย้!

แสดงหน้า Project Laravel ที่ Run บน Docker
แสดงหน้า Project Laravel ที่ Run บน Docker

เรียบร้อยแล้วครับ ถ้าหากบทความนี้มีส่วนไหนผิดพลาดประการใดก็ขออภัยมา ณ ที่นี้ด้วยเน้อครับ หรือหากคุณผู้อ่านอยากแนะนำ ติชม สามารถพิมพ์คอมเม้นท์ทิ้งไว้ได้เลยเน้อครับ

Github: https://github.com/jame3032002/laravel-on-docker

Reference

มาทำ Docker Environment กับ Laravel Project กัน

ลองสร้าง project php หลายตัวใส่ใน nginx ใน docker