Docker 部署 Laravel 應用 - 基礎應用

版本聲明

  • 本文 PHP 基礎鏡像使用:php:7.3-apache
  • 本文 Laravel 版本爲:laravel:5.8.*

1、 準備咱們的 Laravel 應用

# 運行 mix 命令,打包 js、css、img 文件,若是沒有用到 mix 這一步能夠省略
npm install
npm run production
# 安裝 composer.lock 中的依賴
composer install --ignore-platform-reqs --optimize-autoloader --no-dev

2、 準備 Apache 配置文件 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 liuzhaowei55@gmail.com
    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
</VirtualHost>

3、 準備 Dockerfile 文件

FROM php:7.3-apache

LABEL maintainer="liuzhaowei55@gmail.com"

# 設置時區
ARG TZ=Asia/Shanghai
ENV TZ ${TZ}
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 設置軟件源
ARG DEBIAN_URL=mirrors.ustc.edu.cn
ENV DEBIAN_URL ${DEBIAN_URL}
RUN sed -i "s/deb.debian.org/$DEBIAN_URL/g" /etc/apt/sources.list

ARG DEBIAN_SECURITY_URL=mirrors.ustc.edu.cn/debian-security
ENV DEBIAN_SECURITY_URL ${DEBIAN_SECURITY_URL}
RUN sed -i "s|security.debian.org/debian-security|$DEBIAN_SECURITY_URL|g" /etc/apt/sources.list

# 安裝軟件 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/*
        
# 安裝拓展
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
    
# 訪問端口
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、準備 Dockerignore 文件:.dockerignore(非必需)

/node_modules
/.dockerignore
/Dockerfile

5、準備鏡像入口文件:docker-entrypoint.sh(非必需)

注意一下,此文件須要執行權限,不過此入口文件不是必須的,只是爲了在應用運行前執行一些緩存命令,具體能夠點這裏去文檔瞭解一下。php

#!/usr/bin/env bash

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

apache2-foreground

6、運行鏡像

docker run -p 80:80 .

相關閱讀

相關文章
相關標籤/搜索