Example of deploying Laravel application with Docker

Example of deploying Laravel application with Docker
  • The PHP base image used in this article is: php:7.3-apache
  • The Laravel version in this article is: laravel:5.8.*
  • We will write about queues and task scheduling in the next article

1. Prepare our Laravel application

# Run the mix command to package js, css, and img files. If you do not use mix, you can skip npm install.
npm run production
# Install dependencies in composer.lock composer install --ignore-platform-reqs --optimize-autoloader --no-dev

2. Prepare the Apache configuration file docker/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.
 #ServerName www.example.com

 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
 # 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
</VirtualHost>

3. Prepare the Dockerfile

FROM php:7.3-apache

LABEL maintainer="[email protected]"

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

# 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/*
 
# Install extension ENV PHP_EXTENSION \
 pdo_mysql \
 bcmath
ENV PECL_EXTENSION \
 redis
RUN docker-php-ext-install $PHP_EXTENSION \
 && pecl install $PECL_EXTENSION \
 && docker-php-ext-enable $PECL_EXTENSION \
    opcache \
 && a2enmod rewrite
 
# Access port EXPOSE 80

ARG APP_ENV=development
ENV APP_ENV ${APP_ENV}

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

4. Prepare Dockerignore file: .dockerignore (optional)

/node_modules
/.dockerignore
/Dockerfile

5. Prepare the image entry file: docker-entrypoint.sh (optional)

Note that this file requires execution permissions, but this entry file is not necessary. It is just to execute some cache commands before the application runs. You can click here to learn more about it.

#!/usr/bin/env bash

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

apache2-foreground

6. Run the image

docker run -p 80:80 .

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • Detailed explanation of how to install the laravel development environment with docker
  • Detailed tutorial on using Docker to build a local Laravel environment
  • How to use Docker compose to orchestrate Laravel applications
  • Detailed explanation of using Docker to build a development environment for Laravel and Vue projects
  • Docker deploys Laravel application to realize queue & task scheduling
  • Complete steps to build a Laravel development environment using Docker

<<:  MySQL 5.7.23 winx64 installation and configuration method graphic tutorial under win10

>>:  How to use skeleton screen in vue project

Recommend

Summarize the problems encountered in using Vue Element UI

Table of contents 1. DateTimePicker date selectio...

The three new indexes added in MySQL 8 are hidden, descending, and functions

Table of contents Hidden, descending, and functio...

Front-end vue+express file upload and download example

Create a new server.js yarn init -y yarn add expr...

Mobile development tutorial: Summary of pixel display issues

Preface I believe that in the process of mobile t...

Detailed explanation of the use of MySQL concatenation function CONCAT

The previous articles introduced the replacement ...

Centos7 installation of Nginx integrated Lua sample code

Preface The computer I use is a Mac, and the oper...

Vue installation and use

Table of contents 1. Vue installation Method 1: C...

5 ways to migrate Docker containers to other servers

Migration is unavoidable in many cases. Hardware ...

Implementation of drawing audio waveform with wavesurfer.js

1. View the renderings Select forward: Select bac...

How to Learn Algorithmic Complexity with JavaScript

Table of contents Overview What is Big O notation...

Implementation of Docker deployment of MySQL cluster

Disadvantages of single-node database Large-scale...

WeChat applet calculator example

WeChat applet calculator example, for your refere...