Skip to content

Instantly share code, notes, and snippets.

@trovster
Created August 1, 2018 11:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trovster/63df474b5e9c4514eaeb2bc21a887724 to your computer and use it in GitHub Desktop.
Save trovster/63df474b5e9c4514eaeb2bc21a887724 to your computer and use it in GitHub Desktop.
Laravel in Docker
version: '3'
services:
app:
build:
context: .
dockerfile: ./Dockerfile
image: laravel
container_name: laravel
ports:
- 8080:80
- 8443:443
volumes:
- .:/var/www
links:
- mysql:mysql
- redis:redis
environment:
DB_HOST: mysql
DB_DATABASE: laravel
DB_USERNAME: root
DB_PASSWORD: root
REDIS_HOST: redis
SESSION_DRIVER: redis
CACHE_DRIVER: redis
mysql:
image: mysql:5.7
container_name: laravel_db
ports:
- 8036:3306
volumes:
- .db:/var/lib/mysql
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
redis:
image: redis:4.0-alpine
container_name: laravel_redis
ports:
- 16379:6379
FROM php:5.6-apache
# Install gd, iconv, mbstring, mcrypt, mysql, soap, sockets, zip, and zlib extensions
# see example at https://hub.docker.com/_/php/
RUN apt-get update && apt-get install -y \
libbz2-dev \
libfreetype6-dev \
libgd-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libxml2-dev \
zlib1g-dev \
&& docker-php-ext-install iconv mbstring mcrypt soap sockets zip pdo pdo_mysql \
&& docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd \
&& docker-php-ext-configure mysql --with-mysql=mysqlnd \
&& docker-php-ext-install mysql
# enable mod_rewrite
RUN a2enmod rewrite
# install Composer
RUN cd /tmp && curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
# make the webroot a volume
VOLUME /var/www/
WORKDIR /var/www/
RUN rm -rf /var/lib/apt/lists/*
# copy the src/ directory to the webserver root and correct the owner.
COPY . /var/www/
COPY vhost.conf /etc/apache2/sites-available/000-default.conf
RUN chown -R www-data:www-data /var/www/
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["apache2-foreground"]
#EOF
docker exec -w /var/www laravel php artisan migrate --env=development
docker exec -w /var/www laravel php artisan db:seed --env=development
# ./build.sh
# ./build.sh --build
docker-compose up -d $1
docker stop laravel laravel_db laravel_redis -t 0
docker rm laravel laravel_db laravel_redis
<VirtualHost *:80>
DocumentRoot /var/www/public_html
<Directory "/var/www/public_html">
AllowOverride all
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment