Docker deployment Laravel application – basic application



  • This article USES the basic mirror of PHP:php:7.3-apache
  • Laravel version of this article is as follows:laravel:5.8.*

1. Prepare our Laravel application

# run the mix command to package js, CSS, img files, and omit this step if you don't use mix
npm install
npm run production
Install the dependencies in composer. Lock
composer install --ignore-platform-reqs --optimize-autoloader --no-dev

Prepare Apache configuration filesdocker/000-default.conf

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.

    ServerAdmin [email protected]
    DocumentRoot /var/www/html/public

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf

3. Prepare Dockerfile

FROM php:7.3-apache

LABEL maintainer="[email protected]"

# set time zone
ARG TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

Set up the software source
RUN sed -i "s/$DEBIAN_URL/g" /etc/apt/sources.list

RUN sed -i "s||$DEBIAN_SECURITY_URL|g" /etc/apt/sources.list

Install software cron
RUN set -eux \
        && apt-get update \
        && apt-get install -y --no-install-recommends cron \
        && apt-get autoremove \
        && apt-get autoclean \
        && apt-get clean \
        && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# installation extension
    pdo_mysql \
RUN docker-php-ext-install $PHP_EXTENSION \
    && pecl install $PECL_EXTENSION \
    && docker-php-ext-enable $PECL_EXTENSION \
                             opcache \
    && a2enmod rewrite
# access port

ARG APP_ENV=development

COPY --chown=www-data:www-data . /var/www/html
COPY docker/000-default.conf /etc/apache2/sites-available/000-default.conf

WORKDIR /var/www/html

Iv. Prepare Dockerignore file:.dockerignore(optional)


5. Prepare the mirror entry

Note that this file requires execution permissions, but this entry file is not required, just to execute some caching commands before the application runs, you can go to the documentation here.

#!/usr/bin/env bash

php artisan cache:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache


Six, run the mirror

docker run -p 80:80 .


  • Docker deployment Laravel application – basic application
  • Docker deploys Laravel application – queue & task scheduling
  • Docker deployment Laravel application – usewkhtmltopdfExport PDF
  • The sample code

Recommended Today

Query SAP multiple database table sizes

Query SAP multiple database table sizes Item code db02 Here are two approaches, In the first graphical interface, the results of the query data table are displayed in MB, and only one table can be queried at a time. SPACE—Segments—Detailed Analysis—Detailed Analysis  In the pop-up window segment / object, enter the name of the […]