mirror of
https://github.com/docker/awesome-compose.git
synced 2025-04-19 15:28:06 +02:00
Add Laravel Implementation with Docker Compose (#344)
Signed-off-by: Hanie Asemi <hanieasemi76@gmail.com>
This commit is contained in:
parent
e6b1d2755f
commit
dd0dcf2920
5 changed files with 198 additions and 0 deletions
51
laravel/README.md
Normal file
51
laravel/README.md
Normal file
|
@ -0,0 +1,51 @@
|
|||
# Install and Set Up Laravel with Docker Compose
|
||||
|
||||
Setting up Laravel in the local environment with Docker using the LEMP stack that includes: Nginx, MySQL, PHP, and phpMyAdmin.
|
||||
|
||||
## Why use Docker for Development
|
||||
|
||||
- [x] Consistent development environment for the entire team.
|
||||
- [x] You don't need to install a bunch of language environments on your system.
|
||||
- [x] You can use different versions of the same programming language.
|
||||
- [x] Deployment is easy
|
||||
|
||||
## How to Install and Run the Project
|
||||
|
||||
1. ```git clone git@github.com:hanieas/Docker-Laravel.git```
|
||||
2. ```cd src```
|
||||
3. ```composer install```
|
||||
3. Copy ```.env.example``` to ```.env```
|
||||
4. ```docker-compose build```
|
||||
5. ```docker compose up -d```
|
||||
6. You can see the project on ```127.0.0.1:8080```
|
||||
|
||||
## How to use MySQL as a database
|
||||
|
||||
1. Uncomment the MySQL configuration inside the ```docker-compose.yml``` including: ```db``` and ```phpMyAdmin```
|
||||
2. Copy ```.env.example``` to ```.env```
|
||||
3. Change ```DB_CONNECTION``` to ```mysql```
|
||||
4. Change ```DB_PORT``` to ```3306```
|
||||
5. Open the ```phpMyAdmin``` on ```127.0.0.1:3400```
|
||||
|
||||
## How to use PostgreSQL as a database
|
||||
|
||||
1. Uncomment the PostgreSQL configuration inside the ```docker-compose.yml``` including: ```db``` and ```pgamdin```
|
||||
2. Copy ```.env.example``` to ```.env```
|
||||
3. Change ```DB_CONNECTION``` to ```pgsql```
|
||||
4. Change ```DB_PORT``` to ```5432```
|
||||
5. Open the ```pgAdmin``` on ```127.0.0.1:5050```
|
||||
|
||||
## How to run Laravel Commands with Docker Compose
|
||||
|
||||
1. ```cd src```
|
||||
2. ```docker-compose exec app php artisan {your command}```
|
||||
|
||||
## Medium
|
||||
|
||||
https://medium.com/@hanieasemi/setting-up-a-laravel-local-environment-with-docker-7541ae170daf
|
||||
|
||||
## YouTube
|
||||
|
||||
https://www.youtube.com/watch?v=6ANYowpB910
|
||||
|
||||
https://www.youtube.com/watch?v=gZfCAIGsz_o
|
74
laravel/docker-compose.yml
Normal file
74
laravel/docker-compose.yml
Normal file
|
@ -0,0 +1,74 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
|
||||
# Web Server Service
|
||||
nginx:
|
||||
image: nginx:alpine
|
||||
container_name: nginx
|
||||
ports:
|
||||
- "8080:80"
|
||||
volumes:
|
||||
- ./src:/var/www
|
||||
- ./nginx/conf.d/:/etc/nginx/conf.d/
|
||||
depends_on:
|
||||
- app
|
||||
- db
|
||||
|
||||
# Database Service if you want to use mysql uncomment this service and comment the postgres
|
||||
# db:
|
||||
# image : mysql
|
||||
# container_name : mysql
|
||||
# volumes:
|
||||
# - ./mysql/data:/var/lib/mysql
|
||||
# ports:
|
||||
# - "3306:3306"
|
||||
# environment:
|
||||
# MYSQL_DATABASE: blog
|
||||
# MYSQL_ROOT_PASSWORD: password
|
||||
|
||||
# Database Service
|
||||
db:
|
||||
image: postgres
|
||||
container_name: postgres
|
||||
volumes:
|
||||
- ./postgresql/data:/var/lib/postgresql/data
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
POSTGRES_DB: blog
|
||||
POSTGRES_USER: root
|
||||
POSTGRES_PASSWORD: password
|
||||
|
||||
# Application Service
|
||||
app:
|
||||
container_name: blog
|
||||
build:
|
||||
context: ./php
|
||||
dockerfile: Dockerfile
|
||||
volumes:
|
||||
- ./src:/var/www
|
||||
ports:
|
||||
- "9000:9000"
|
||||
working_dir: /var/www
|
||||
|
||||
# phpMyAdmin Service if you want to mysql uncomment this service and comment the pgadmin
|
||||
# phpmyadmin:
|
||||
# image: phpmyadmin/phpmyadmin
|
||||
# container_name: phpmyadmin
|
||||
# ports:
|
||||
# - "3400:80"
|
||||
# depends_on:
|
||||
# - db
|
||||
|
||||
# pgAdmin Service
|
||||
pgadmin:
|
||||
image: dpage/pgadmin4
|
||||
container_name: pgAdmin
|
||||
ports:
|
||||
- "5050:80"
|
||||
depends_on:
|
||||
- db
|
||||
environment:
|
||||
PGADMIN_DEFAULT_EMAIL: hanieasemi76@gmail.com
|
||||
PGADMIN_DEFAULT_PASSWORD: password
|
23
laravel/nginx/conf.d/default.conf
Normal file
23
laravel/nginx/conf.d/default.conf
Normal file
|
@ -0,0 +1,23 @@
|
|||
server {
|
||||
listen 80;
|
||||
index index.php index.htm index.html;
|
||||
error_log /var/log/nginx/error.log;
|
||||
access_log /var/log/nginx/access.log;
|
||||
server_name localhost;
|
||||
root /var/www/public;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location /index.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;
|
||||
|
||||
}
|
||||
}
|
50
laravel/php/Dockerfile
Normal file
50
laravel/php/Dockerfile
Normal file
|
@ -0,0 +1,50 @@
|
|||
FROM php:8.0.3-fpm
|
||||
|
||||
RUN docker-php-ext-install pdo pdo_mysql
|
||||
|
||||
|
||||
RUN apt-get update
|
||||
|
||||
# Install useful tools
|
||||
RUN apt-get -y install apt-utils nano wget dialog vim
|
||||
|
||||
# Install important libraries
|
||||
RUN echo "\e[1;33mInstall important libraries\e[0m"
|
||||
RUN apt-get -y install --fix-missing \
|
||||
apt-utils \
|
||||
build-essential \
|
||||
git \
|
||||
curl \
|
||||
libcurl4 \
|
||||
libcurl4-openssl-dev \
|
||||
zlib1g-dev \
|
||||
libzip-dev \
|
||||
zip \
|
||||
libbz2-dev \
|
||||
locales \
|
||||
libmcrypt-dev \
|
||||
libicu-dev \
|
||||
libonig-dev \
|
||||
libxml2-dev
|
||||
|
||||
RUN echo "\e[1;33mInstall important docker dependencies\e[0m"
|
||||
RUN docker-php-ext-install \
|
||||
exif \
|
||||
pcntl \
|
||||
bcmath \
|
||||
ctype \
|
||||
curl \
|
||||
iconv \
|
||||
xml \
|
||||
soap \
|
||||
pcntl \
|
||||
mbstring \
|
||||
tokenizer \
|
||||
bz2 \
|
||||
zip \
|
||||
intl
|
||||
|
||||
# Install Postgre PDO
|
||||
RUN apt-get install -y libpq-dev \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
|
||||
&& docker-php-ext-install pdo pdo_pgsql pgsql
|
0
laravel/src/your-laravel-project.php
Normal file
0
laravel/src/your-laravel-project.php
Normal file
Loading…
Add table
Add a link
Reference in a new issue