Created
October 13, 2020 12:45
-
-
Save frinux/56c5701d0d47558ad207e44212ce18ac to your computer and use it in GitHub Desktop.
Laravel 8 PHP 7.4 Dockerfile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ######################################### | |
# Install Composer dependencies | |
# ######################################### | |
FROM composer:latest as vendor | |
COPY composer.json composer.json | |
COPY composer.lock composer.lock | |
RUN composer install \ | |
--ignore-platform-reqs \ | |
--no-interaction \ | |
--no-plugins \ | |
--no-scripts \ | |
--prefer-dist | |
# ######################################### | |
# Build PHP Image | |
# ######################################### | |
FROM php:7.4-apache | |
# Required packages & php extensions | |
RUN apt-get update \ | |
&& apt-get install -y --no-install-recommends \ | |
git \ | |
cron \ | |
libfreetype6-dev \ | |
libgmp-dev \ | |
libjpeg-dev \ | |
libmagickwand-dev \ | |
libmemcached-dev \ | |
libpng-dev \ | |
libpq-dev \ | |
libssl-dev \ | |
libxml2-dev \ | |
libz-dev \ | |
libzip-dev \ | |
nano \ | |
openssh-server \ | |
unzip \ | |
zlib1g-dev \ | |
&& docker-php-ext-install bcmath \ | |
&& docker-php-ext-install exif \ | |
&& docker-php-ext-install gmp \ | |
&& docker-php-ext-install intl \ | |
&& docker-php-ext-install pcntl \ | |
&& docker-php-ext-install pdo \ | |
&& docker-php-ext-install pdo_pgsql \ | |
&& docker-php-ext-install pgsql \ | |
&& docker-php-ext-install soap \ | |
&& docker-php-ext-install sockets \ | |
&& docker-php-ext-install zip | |
# Free space | |
RUN rm -r /var/lib/apt/lists/* | |
# Enable mod_rewrite | |
RUN a2enmod rewrite | |
# Override Apache document root | |
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 | |
ARG APP_VERSION | |
# Fetch previously installed composer deps | |
COPY --from=vendor --chown=www-data:www-data /app/vendor/ /var/www/html/vendor/ | |
# Fetch project files | |
COPY --chown=www-data:www-data . /var/www/html | |
# Write version file | |
RUN echo ${APP_VERSION} >> /var/www/html/public/version.txt | |
RUN chown www-data:www-data /var/www/html/public/version.txt | |
# Use the default production configuration | |
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" | |
# Override memory limit | |
RUN echo "memory_limit = 1024M" >> $PHP_INI_DIR/php.ini | |
# Script handling different roles | |
# Takes CONTAINER_ROLE environmlent variables | |
# - app -> start Apache server to serve Laravel API | |
# - horizon -> starts horizon queue worker | |
# - queue_worker -> starts laravel native queue worker | |
# - scheduler -> starts CRON scheduler | |
COPY docker/docker-command.sh /usr/local/bin/start | |
RUN chmod u+x /usr/local/bin/start | |
CMD ["/usr/local/bin/start"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment