Merhaba,
Laravel 9 projemi kendi sunucuma deploy etmeye çalışırken bir çok problem yaşadım.
Bundan dolayı digitalocean'nın vermiş olduğu 100$ lık kod ile Docker sunucusu oluşturdum. Docker'ı biraz anladıktan sonra eski Centos sunucuma docker yükleyip tekrardan deneyeceğim. Gerekli docker ayarlarını yaptıktan uzun süre sonra projeyi çalıştırabildim. Fakat kurulum sırasında npm
komutlarını sunucu içine Docker ile değil manuel olarak kurup çalıştırabildim. Eklemiş olduğum dosyaları ek olarak ekliyorum. Sanırım Dockerfile içine npm komutlarını nasıl eklemem gerekliydi. Ama onca araştırmama rağmen bir türlü npm komutlarını docker ile çalıştıramadım. Npm'i nasıl docker içerisinde çalıştırabilirim?
docker-compose.yml
version: "3.7"
services:
app:
build:
args:
user: laravel
uid: 1000
context: ./
dockerfile: ../Dockerfile
image: laravel
container_name: laravel-app
restart: unless-stopped
working_dir: /var/www/app/
volumes:
- ./:/var/www/app
networks:
- laravel
db:
image: mysql:8.0
container_name: laravel-db
restart: unless-stopped
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_USER: ${DB_USERNAME}
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- ../mysql:/docker-entrypoint-initdb.d
networks:
- laravel
nginx:
image: nginx:alpine
container_name: laravel-nginx
restart: unless-stopped
ports:
- 80:80
volumes:
- ./:/var/www/app
- ../nginx:/etc/nginx/conf.d/
networks:
- laravel
networks:
laravel:
driver: bridge
var/www/nginx/laravel.conf
server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/app/public;
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
/var/www/Dockerfile
FROM php:8.1-fpm
# Arguments defined in docker-compose.yml
ARG user
ARG uid
# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libjpeg-dev \
libonig-dev \
libxml2-dev \
libzip-dev \
zip \
unzip
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-configure gd --with-jpeg
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip
# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
chown -R $user:$user /home/$user
# Set working directory
WORKDIR /var/www/app
USER $user