Skip to content

Instantly share code, notes, and snippets.

@SreejithEzhakkad
Last active December 4, 2019 00:37
Show Gist options
  • Save SreejithEzhakkad/7dc6c115391291e9662404576702c73a to your computer and use it in GitHub Desktop.
Save SreejithEzhakkad/7dc6c115391291e9662404576702c73a to your computer and use it in GitHub Desktop.
Dockerfile for Laravel app with NGIX & MySQL
FROM php:7.3-fpm
# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/
# Set working directory
WORKDIR /var/www
# Install dependencies
RUN apt-get update && apt-get install -y \
build-essential \
libzip-dev \
libpng-dev \
libjpeg62-turbo-dev \
libwebp-dev libjpeg62-turbo-dev libpng-dev libxpm-dev \
libfreetype6 \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
unzip \
git \
curl
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Add user for laravel application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www
# Copy existing application directory contents
COPY . /var/www
# Copy existing application directory permissions
COPY --chown=www:www . /var/www
# Change current user to www
USER www
# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]
@0xDones
Copy link

0xDones commented Dec 4, 2019

You don't need to use the COPY command twice, you can use just

COPY --chown=www:www . .

This means you will copy all the files from the host to the WORKDIR you set earlier.

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