用 Laradock搭建本地 PHP 容器开发环境&宝塔Docker一键部署

image.png

很多时候工作中我感觉到深深的痛苦,因为我不能愉快的开发,50%甚至80%的时间都浪费在环境搭建上,依赖问题、环境变量问题、端口冲突、编译库、扶墙走问题等等。

可以说Docker很大程度拯救了我,这个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,不在受本地环境限制,就能得到良好的工作环境,并且便携无迁移痛苦,在我实践的这几年中深深受益。

今天是要总结的是 PHP开发、部署环境。我因为主业不是PHP开发,虽然有一定经验,但也比较少去做一些基于 php 的大型项目,但它来了,所以我就祭出 docker 来搭建一套方便的开发部署环境,平时我的本地开发环境需求比较复杂,既会做 java、nodejs、python,现在又加上 php,还有一些非语言类的环境,如果都安装在本地先不说会不会冲突,维护起来也真够一梦的,所以当前的本地开发除非必要全部都是 docker 容器化。

不说废话,开始工作。

搭建PHP Docker 开发环境

这次的 PHP docker 开发环境有大神已经做好了,我们只要下载回来安装即可,在 github 中搜索 laradock。

一、配置

cd ~
mkdir PHP_Workspace
cd PHP_Workspace
git clone https://github.com/laradock/laradock
cp env-example env

.env 文件大部分情况下不需要改动,但很有可能我们会遇到 docker 镜像拉取慢、npm 包下载慢等网络问题,所以我们进行如下配置。

1、Docker 源配置

image
{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com"
  ]
}

配置为国内源的源。

2、Wokspace 配置

  # If you need to change the sources (i.e. to China), set CHANGE_SOURCE to true
  CHANGE_SOURCE=true
  # Set CHANGE_SOURCE and UBUNTU_SOURCE option if you want to change the Ubuntu system sources.list file.
  UBUNTU_SOURCE=aliyun

3、NVM配置

 WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node

其它各种开发配置都可以在 .env 文件中找到,如 php debug相关

PHP_FPM_INSTALL_XDEBUG

WORKSPACE_INSTALL_XDEBUG

二、启动容器

docker-compose up -d nginx mysql phpmyadmin redis workspace 

这步操作会执行 docker 的自动下载 image 以及 buid 相关操作,执行后会得到以下容器

  • nginx
  • mysql
  • phpmyadmin
  • redis
  • php-fpm
  • workspace

三、开发配置

这个时我们就可以进行项目开发相关的配置

将我们的项目放在 PHP_Workspace 工程下面,与 laradock 同级,目录如下

➜  PHP_Workspace
.
├── laradock
└── mp-shop

配置 nginx

cd ./laradock/nginx/sites

.
├── app.conf.example
├── confluence.conf.example
├── default.conf
├── laravel.conf.example
├── laravel_varnish.conf.example
├── mp-shop.conf
└── symfony.conf.example

可以看到文件夹中有一些配置模板,根据需要可以 copy 过来使用或者自建,我这里新建了 mp-shop.conf,配置就是 copy laravel.conf 但是略有调整

image

Nginx 就配置好了,然将我们的 server_name 做一下本地的 host 映射

127.0.0.1 mp-shop.test

检验

docker-compose exec workspace bash

drwxr-xr-x 87 root root 2784 Mar 22 01:21 laradock
drwxrwxr-x 14 root root  448 Mar 21 07:36 mp-shop

可以看到进入 workspace 容器后里面已经映射好当前 PHP_Workspace 中的项目以及 laradock 环境。

访问 mp-shop.test 网页如期而遇的展现出来。

一些项目的补充说明,当前开发环境启动后,我们的程序针对数据库、redis 或其它服务的主机名,可以在.env 中找到

DB_HOST=mysql
REDIS_HOST=redis
// 数据库配置
$config = [
    'host' => 'mysql',
    'database' => 'default',
    'username' => 'default',
    'password' => 'secret',
    'port' => '3306',
    'charset' => 'utf8',
];

**以上就是基于 **laradock 的本地 docker 开发环境的配置,中间我遇到的主要问题就是网络环境和一些配置不清的问题,所以这方面遇到问题的同学可以与我直接交流,接下来就是关于上线所应用的宝塔。

Docker 宝塔一键部署

宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。在运维界知名度相当高,也非常的好用、实用,但直接安装还是稍微繁琐,今天我们就用 docker 来一键部署。

这里我用一个完成度很好的 docker 脚本项目,简单介绍下:

  • 镜像默认使用 Centos7 基础镜像,使用 Dockerfile 构建* 该脚本每次 build 的用户名和密码以及登录URL都不同,请使用 docker-compose logs app 查看默认信息* 安装时间视网络环境而定,建议更换 Docker 的国内源* 启动脚本是 ./DockerScript/init.sh* 配置文件 .env 中都有详细的注释* 使用 volume 作持久化存储,数据卷名为 baota_app

1、克隆项目

git clone https://github.com/ifui/baota

2、配置环境

cp .env-example .env

3、启动镜象

docker-compose up -d app

完成!

总结

此篇文章主要介绍了如何利用 Laradock 搭建一套完善的本地 php 开发环境,以及如何利用 docker 去方便的部署宝塔,此次项目中主要遇到了网络问题、配置说明不清晰的问题,耽误了不少时间,但效果是非常好的。下面附上文中应用的相关项目。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342