Docker部署Laravel應用的實現示例
- 本文 PHP 基礎鏡像使用:php:7.3-apache
- 本文 Laravel 版本為:laravel:5.8.*
- 隊列和任務調度我們在下一篇寫
一、 準備我們的 Laravel 應用
# 運行 mix 命令,打包 js、css、img 文件,如果沒有用到 mix 這一步可以省略 npm install npm run production # 安裝 composer.lock 中的依賴 composer install --ignore-platform-reqs --optimize-autoloader --no-dev
二、 準備 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>
三、 準備 Dockerfile 文件
FROM php:7.3-apache
LABEL maintainer="liuzhaowei55@gmail.com"
# 設置時區(qū)
ARG TZ=Asia/Shanghai
ENV TZ ${TZ}
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 安裝軟件 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
四、準備 Dockerignore 文件:.dockerignore(非必需)
/node_modules /.dockerignore /Dockerfile
五、準備鏡像入口文件:docker-entrypoint.sh(非必需)
注意一下,此文件需要執(zhí)行權限,不過此入口文件不是必須的,只是為了在應用運行前執(zhí)行一些緩存命令,具體可以點這里去文檔了解一下。
#!/usr/bin/env bash php artisan cache:clear php artisan config:cache php artisan route:cache php artisan view:cache apache2-foreground
六、運行鏡像
docker run -p 80:80 .
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
詳解MAC OSX Docker開發(fā)環(huán)境搭建
本篇文章主要介紹了詳解MAC OSX Docker開發(fā)環(huán)境搭建,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
Docker部署HertzBeat實時監(jiān)控告警系統
HertzBeat是一款開源的實時監(jiān)控告警系統,本文就來介紹一下Docker部署HertzBeat實時監(jiān)控告警系統,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-11-11
詳解Ubuntu16.04安裝Docker、nvidia-docker的教程
這篇文章主要介紹了詳解Ubuntu16.04安裝Docker、nvidia-docker的教程,需要的朋友可以參考下2019-10-10
開源框架?Matrix-Dendrite?搭建聊天服務器的詳細過程
Matrix?是一個開源、可交互、去中心化的實時通信服務框架。使用?Matrix?可以搭建安全的通信服務器,配合支持?Matrix?的客戶端可以實現個人、團隊間的實時聊天交互,對Matrix?Dendrite搭建聊天服務器的過程感興趣的朋友一起看看吧2022-03-03

