Skip to content

Instantly share code, notes, and snippets.

@funkytaco
Forked from Rafat97/1.md
Last active July 11, 2023 12:49
Show Gist options
  • Save funkytaco/dd6132b25c7953b582424e03daa17678 to your computer and use it in GitHub Desktop.
Save funkytaco/dd6132b25c7953b582424e03daa17678 to your computer and use it in GitHub Desktop.
🐳🐳 Laravel Docker Compose 🐳🐳
version: '3.3'
networks:
my-network-dockerApp:
services:
db:
image: mysql:latest
container_name: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- '6603:3306'
environment:
MYSQL_DATABASE: 'laraapp_db'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_ROOT_PASSWORD: ""
# or
# MYSQL_DATABASE: ""
# MYSQL_USER: ""
# MYSQL_ROOT_PASSWORD: ""
# MYSQL_PASSWORD: ""
volumes:
- ./mysql/data:/var/lib/mysql
# - /.docker/db_backup:/docker-entrypoint-initdb.d
# # - ./mysql/config:/etc/mysql
networks:
- my-network-dockerApp
db-management:
depends_on:
- db
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
restart: always
ports:
- '6601:80'
environment:
PMA_HOST: db
networks:
- my-network-dockerApp
redis:
image: redis:alpine
container_name: redis
restart: always
ports:
- "6379:6379"
volumes:
- ./redis/data:/data
# - ./redis-etc:/usr/local/etc/redis
networks:
- my-network-dockerApp
app:
build:
context: .
dockerfile: ./php-apache-Dockerfile/Dockerfile
image: 'laravel-app'
container_name: 'app-setup'
restart: always
depends_on:
- db
- db-management
- redis
ports:
- 8088:80
volumes:
- ./html/:/var/www/html
networks:
- my-network-dockerApp
app-queue:
build:
context: .
dockerfile: ./laravel-queue-Dockerfile/Dockerfile
image: 'laravel-queue'
restart: always
depends_on:
- app
container_name: 'app-laravel-queue'
ports:
- 8090:80
volumes:
- ./html/:/var/www/html
networks:
- my-network-dockerApp
app-scheduler:
build:
context: .
dockerfile: ./laravel-scheduler-Dockerfile/Dockerfile
image: 'laravel-scheduler'
restart: always
depends_on:
- app
container_name: 'app-laravel-scheduler'
ports:
- 8091:80
volumes:
- ./html/:/var/www/html
networks:
- my-network-dockerApp
# app-scheduler:
# build:
# context: .
# dockerfile: ./laravel-scheduler-Dockerfile/Dockerfile
# image: 'laravel-scheduler'
# container_name: 'app-laravel-scheduler'
# ports:
# - 8089:80
# volumes:
# - ./:/var/www/docker-link
# networks:
# - my-network-dockerApp
# app-queue:
# build:
# context: .
# dockerfile: ./laravel-queue-Dockerfile/Dockerfile
# image: 'laravel-queue'
# container_name: 'app-laravel-queue'
# ports:
# - 8090:80
# volumes:
# - ./:/var/www/docker-link
# networks:
# - my-network-dockerApp
# version: '3.3'
# services:
# php-pure:
# image: php:7.4-fpm-alpine
# restart: always
# tty: true
# working_dir: /var/www
# volumes:
# - ./code:/var/www
# - ./local.ini:/usr/local/etc/php/conf.d/local.ini
# networks:
# auth-networks:
# # php:
# # networks:
# # - my-network-dockerApp
# # container_name: language-php
# # build:
# # context: .
# # dockerfile: Dockerfile
# # restart: always
# # ports:
# # - "9000:9000"
# # nginx:
# # networks:
# # - my-network-dockerApp
# # container_name: webserver-nginx
# # depends_on:
# # - php
# # - mysql
# # image: nginx:latest
# # restart: always
# # volumes:
# # - ./:/var/html/
# # - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
# # ports:
# # - "8088:80"
# # - "4443:443"
# mysql:
# networks:
# - my-network-dockerApp
# container_name: database-mysql
# image: mysql:latest
# restart: always
# tty: true
# ports:
# - "4306:3306"
# environment:
# MYSQL_ROOT_PASSWORD: root
# MYSQL_DATABASE: test-db
# MYSQL_USER: root
# MYSQL_PASSWORD: root
# phpmyadmin:
# networks:
# - my-network-dockerApp
# container_name: database-phpmyadmin
# image: phpmyadmin/phpmyadmin
# restart: always
# ports:
# - 8090:80
# environment:
# PMA_HOST : mysql
# networks:
# my-network-dockerApp:
## It workes tested
# version: '3.3'
# services:
# db:
# image: mysql:latest
# container_name: appsDB
# restart: always
# ports:
# - '6603:3306'
# environment:
# MYSQL_ROOT_PASSWORD: helloworld
# app:
# depends_on:
# - db
# image: phpmyadmin/phpmyadmin
# container_name: phpmyadmin
# restart: always
# ports:
# - '8081:80'
# environment:
# PMA_HOST: db
#
### It workes tested properly
# version: '3.3'
# services:
# php:
# image: php:7.4-apache
# ports:
# - 8088:80
# volumes:
# - ./html:/var/www/html/
#####################################
#
# php:7.4-apache setup
#
#####################################
FROM php:7.4-apache
USER root
WORKDIR /var/www/html
#####################################
# Install Node Js
#####################################
RUN rm -rf /var/lib/apt/lists/* && curl -sL https://deb.nodesource.com/setup_14.x | bash -
RUN apt-get install nodejs -y
RUN rm -rf /var/lib/apt/lists/*
#####################################
# Install svgo
#####################################
RUN npm install -g svgo
#####################################
# Installing tools & lib
#####################################
RUN apt-get update && apt-get install -y \
libicu-dev \
libbz2-dev \
libjpeg-dev \
libmemcached-dev \
libpng-dev \
libwebp-dev \
libmcrypt-dev \
libreadline-dev \
libfreetype6-dev \
zlib1g-dev \
libxml2-dev \
libz-dev \
libssl-dev \
libzip-dev \
libonig-dev \
libpq-dev \
zip \
curl \
unzip \
git \
sudo \
g++\
vim \
nano \
supervisor \
jpegoptim \
optipng \
pngquant \
gifsicle \
&& rm -rf /var/lib/apt/lists/*
#####################################
# Install PHP extensions
#####################################
RUN docker-php-ext-install \
bz2 \
intl \
iconv \
bcmath \
opcache \
calendar \
mbstring \
pdo\
pdo_mysql \
pdo_pgsql \
mysqli \
zip \
pcntl \
sockets \
gettext\
exif\
&& docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-source delete
#####################################
# mcrypt:
#####################################
RUN pecl install mcrypt\
&& docker-php-ext-enable mcrypt
#####################################
# Memcached:
#####################################
RUN pecl install memcached \
&& docker-php-ext-enable memcached
#####################################
# REDIS
#####################################
RUN pecl install redis \
&& docker-php-ext-enable redis
#####################################
# PSR
#####################################
RUN pecl install psr \
&& docker-php-ext-enable psr
#####################################
# ImageMagick:
#####################################
USER root
RUN apt-get update -y && \
apt-get install -y libmagickwand-dev imagemagick && \
pecl install imagick && \
docker-php-ext-enable imagick
####################################
# Apache Configration
####################################
# COPY ./vhost.conf /etc/apache2/sites-available/000-default.conf
ENV APACHE_DOCUMENT_ROOT /var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
####################################
# Composer
####################################
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
####################################
# Clear Cache
####################################
RUN apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-source delete \
&& pecl clear-cache
RUN chown -R www-data:www-data /var/www/html \
&& a2enmod rewrite
RUN a2enmod rewrite headers

🐳🐳 Docker Compose for Laravel 🐳🐳

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment