- Published on
ลองสร้าง 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
จากนั้นใส่โค้ดลงไปดังนี้ครับ
# 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
จากนั้นใส่ข้อมูลเข้าไปดังนี้ครับ
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
จากนั้นใส่ข้อมูลดังนี้ครับ
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 จะพบว่าสามารถเข้าได้แล้ว เย้!
เรียบร้อยแล้วครับ ถ้าหากบทความนี้มีส่วนไหนผิดพลาดประการใดก็ขออภัยมา ณ ที่นี้ด้วยเน้อครับ หรือหากคุณผู้อ่านอยากแนะนำ ติชม สามารถพิมพ์คอมเม้นท์ทิ้งไว้ได้เลยเน้อครับ
Github: https://github.com/jame3032002/laravel-on-docker