chore: docker file and compose
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled

This commit is contained in:
2025-09-28 20:04:02 +05:45
parent 2162084b95
commit 33039362cc
3 changed files with 94 additions and 0 deletions

22
Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
FROM php:8.2-fpm
# Install system dependencies
RUN apt-get update && apt-get install -y \
git curl zip unzip libpng-dev libonig-dev libxml2-dev libzip-dev \
&& docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd zip
# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
# Set working directory
WORKDIR /var/www
# Copy existing application code
COPY . .
# Install Laravel dependencies
RUN composer install --no-dev --optimize-autoloader
# Give permission
RUN chown -R www-data:www-data /var/www \
&& chmod -R 755 /var/www/storage /var/www/bootstrap/cache

49
docker-compose.yml Normal file
View File

@@ -0,0 +1,49 @@
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
image: laravel-app
container_name: laravel-app
restart: unless-stopped
working_dir: /var/www
volumes:
- .:/var/www
networks:
- laravel
webserver:
image: nginx:alpine
container_name: laravel-webserver
restart: unless-stopped
ports:
- '8080:80'
volumes:
- .:/var/www
- ./docker/nginx/conf.d:/etc/nginx/conf.d
networks:
- laravel
db:
image: mysql:8.0
container_name: laravel-db
restart: unless-stopped
environment:
MYSQL_DATABASE: soorya
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: laravel
MYSQL_PASSWORD: laravel
volumes:
- dbdata:/var/lib/mysql
ports:
- '3306:3306'
networks:
- laravel
networks:
laravel:
volumes:
dbdata:

23
docker/nginx/conf.d Normal file
View File

@@ -0,0 +1,23 @@
server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
}