一步步教你如何使用 laradock 搭建项目环境

前言:

看群里和laravel社区有些人对docker不太会使用,在这里我推荐使用laradock来部署我们的项目环境,用laradock部署简单快捷,方便管理,可以为你省出很多时间陪陪家人。现在用laradock一步步搭建环境。

setup 1:

从github上拉去laradock项目
git clone https://github.com/laradock/laradock.git

setup 2:

进入laradock文件夹,重命名或者复制 env-example 到 .env文件

setup 3:

编辑.env文件(这个.env文件是对环境信息的一些配置)。在这里对.env文件里一些配置信息做个简单说明:
1.APPLICATION=../ 设置docker-compose基础目前映射 比如:容器里的 /var/www目录映射到上级目录
2.PHP_VERSION=71 使用环境的php版本号。这里71表示7.1版本。之后在安装的过程中,php-fpm和php-cli安装版本都会引用这个变量。
3.PHP_INTERPRETER=php-fpm 使用php的解释引擎,这儿有两个参数可以选择(hhvm php-fpm)
4.DATA_SAVE_PATH=~/.laradock/data 数据保存目录。这儿的意思是:容器里的数据目录映射到宿主机哪个目录。
5.DOCKER_HOST_IP=10.0.75.1 设定docker内部网络ip
备注:简单的介绍几个配置说明,建议同学们有时间可以把该配置文件读一遍,能理解每一个参数的含义,这样有助于搭建docker-compose环境。还有同学们只需要知道这个.env文件是对docker-compose构建容器时候,提供的一些参数即可。很像laravel的 .env文件
对了,.env文件还有这下面的一些参数呢,它的意思就是具体对某一个容器的设置了。
例如:
PHP_FPM_INSTALL_XDEBUG=false
PHP_FPM_INSTALL_MONGO=false
PHP_FPM_INSTALL_MSSQL=fals
比如这些就是设定在php-fpm容器中中是否安装xdebug,mongo扩展这些。 (建议同学们下来自己看看,由于文章篇幅原因我只复制了一点点内容。因为是教程的原因,我这里也不作更改,使用默认的配置即可。)
在这里再介绍下: docker-compose.yml文件, 这个文件是对具体容器的配置,还需要熟悉一些yml文件的一些语法。不过没关系,我会在文章后面附上docker和docker-compose的学习地址。

setup 4:

接下来我们就开始构建容器吧!
运行: docker-compose up -d mysql nginx
参数 up 表示启动容器 -d 表示后台运行
第一次构建会有点慢,因为它要拉取数据。

setup 5:

访问服务器ip,如果出现404,说明就能够正常访问了。现在我们去laradock/nginx/sites/目录下,修改或者添加后缀为conf文件。
修改default.conf文件,把网站www目录修改到项目目录即可。这儿需要注意一点的是:最开始提到的.env文件 APPLICATION参数所配置的映射目录,就是宿主机与容器的目录映射关系。

总结:

在QQ群里有时会看见有些网友会问关于如何使用laradock搭建环境的问题,随根据自己最近在工作中有使用laradock搭建环境得出的一些经验和踩过的一些坑,写成文章分享给大家。 由于我不太会写文章,可能会存在语句不通顺的情况,还请大家见谅,我会努力提高写作水平,让大家阅读起来能舒服一点。嘿嘿,受Summer的影响,我会坚持以后每周写一篇文章。

本作品采用《CC 协议》,转载必须注明作者和本文链接
Aaron
本帖由系统于 6年前 自动加精
Aaron
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 35

先收藏,后续实践:smile:

6年前 评论
Aaron

@fmaple 嗯嗯,好的噢!

6年前 评论
nickfan

按国内网络环境fork修改的版本现已更新到最新v4版本

https://github.com/nickfan/laradock

可重新star哈 :joy:

6年前 评论

其实我想问用 docker 和用 Nginx/Apache 有什么不同和好处吗?

6年前 评论
Aaron

@sethhu docker是容器,nginx 和apache是web软件。 你可以这样理解:docker是一个运行操作系统的环境,而我们平常所说的nginx容器,意思就是这个容器只运行了nginx这个服务。

6年前 评论
Aaron

@nickfan 这是你自己根据laradock修改的吗?

6年前 评论
nickfan

@Aaron
是的,根据目前最新的v4的版本重新改的版本
composer换国内镜像
node,yarn换国内镜像(淘宝)
ubuntu换国内镜像
修复官方的一个change_source的Dockfile中的语法问题。

6年前 评论
nickfan

@Aaron 你也可以和官方的repo比较一下我改了哪些内容,定制修改的比较符合我自己的习惯,就没发PR了。
好像默认的change_source的环境变量没有效果,所以改默认值为true了,不适合发PR,毕竟老外使用国内镜像的还不多。

6年前 评论

laradock里面的redis,默认是没有配置文件redis.conf的,我看了下他的dockerfile需要我提供redis.conf文件,然后COPY进去,我也提供了一个和他版本对应的redis.conf文件,然后放开copy注释,以及cmd运行的时候是指定配置文件的,然后这个redis容器总是启动不起来,能否提供一个redis.conf,因为如果做集群就需要这个配置文件

6年前 评论
Aaron

@nickfan 嗯嗯,其实我也克隆了laradock,自己也做了些更改后,部署在生产环境上。比如有些Dockerfile文件add 命令复制文件的,我改成使用映射方法。因为这样我直接修改文件后,再重启容器就可以生效了。如果使用add命令添加的文件,又要重写打包镜像,感觉很麻烦呢。

6年前 评论
Aaron

@jdxia 明天我到公司看看。 如果容器启动不成功,你使用 docker-compose log 容器名 ,就可以看错误记录,根据错误记录就好差错了。

6年前 评论

先收藏,再实践。

6年前 评论

@Aaron redis的日志打印出来是这个

1:C 03 Jan 05:50:00.991 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 03 Jan 05:50:00.992 # Redis version=4.0.6, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 03 Jan 05:50:00.992 # Configuration loaded
1:C 03 Jan 06:53:19.631 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 03 Jan 06:53:19.632 # Redis version=4.0.6, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 03 Jan 06:53:19.633 # Configuration loaded

docker-compose ps看到redis容器的退出码是Exit 0,但是这个容器根本启动不了

6年前 评论
Aaron

@jdxia

file
这是我的redis/Dockerfile文件

file
这是docker-compose.yml文件

6年前 评论
Aaron

@jdxia 你用docker-compose up -d redis ,然后用docker ps -a ,看看容器状态

6年前 评论
mouyong

@nickfan 官方的 change_source 存在什么语法问题?

6年前 评论
nickfan
RUN if xxx
 RUN sed -i
;fi

关键是Dockfile里RUN是单条Dockfile环境的指令语法,RUN 指令中的内容不可能嵌套 RUN指令,只能是单条的bash语句。

6年前 评论

@Aaron 经排查,发现,容器中,如果是指定配置文件启动方式,redis.conf文件中这一行

daemonize no

不要改为yes,改为yes,他会启动起来,但是一启动就会退出了,而且退出还是正常退出,因为我看容器退出的状态是Exit(0),返回值是0,但是不太明白为什么配置文件设置后台启动就会给我自动退出?
问题解决了

6年前 评论
Aaron

@jdxia 我忘给你说了,所有在docker运行的软件,都不能后台运行。必须设置为前台模式。具体什么原因,我也不太清楚哈!

6年前 评论
mouyong

@nickfan 我运行后没问题呀?虽然看着是语法错了。o(∩∩)o...哈哈,已改,不过,为啥你不将 env 的默认值 change_source 改为 true, 工程量好浩大的感觉。

6年前 评论
nickfan

change_source的默认值我fork的版本已改为true的,所以没有PR
另外官方v4版目前而言,
修改源的只有alphine的系统的源,而实际上还有:ubuntu的源,composer的源,nodejs,yarn的源都没有添加对应的处理,我只是借这个参量完善一下对应的处理,但其实理想的方式应该是repo_source='cn'这样的方式,然后不同区域标识可以用不同的源集合。
也许以后的laradock的版本会完善这部分的工作,目前而言,对国内环境,我改的版本够用,如果有不同区域的需求,自行修改对应上面提到的alphine,ubuntu,composer,nodejs,yarn对应区域的源即可。

6年前 评论
mouyong

@nickfan 恩。

6年前 评论
mouyong

@nickfan 之所以修改 nginx 的源是因为以前 nginx 的基础 alpine 镜像在下载某些文件会出错,因为官方源里没有那个文件。后来修复了这个问题。但是国外下载慢了点。然后其他镜像构建的速度能忍受,就没管了。o(∩∩)o...哈哈、o(∩∩)o...哈哈

6年前 评论

@nickfan
嗨,朋友,我刚才在你的laradock的fork版本中提交了一份PR,你可以看下

6年前 评论
nickfan

@jdxia 已合并,非常感谢,一点小建议,一般而言,用test做样例域名会让大多数人比较好理解。

6年前 评论

@nickfan 可是在postman中这是要https的,,因为HSTS对于新手来说,他会懵逼的

6年前 评论
nickfan

@jdxia 额,我记得是dev的域名吧。

6年前 评论

@nickfan Service 'mysql' failed to build: unexpected EOF 雄哥,报这个错啊

6年前 评论

请问怎么使用navacite链接docker里面的mysql ip地址要写哪个

5年前 评论

win7 下,使用 docker toolbox 安装的 laradock 使用 localhost 访问不了页面,使用 docker-compose ps 命令查看服务都 up 的。

5年前 评论

请问,laradock能否进行vue-cli开发?

5年前 评论

@nickfan
用postman 调接口都返回 laradock 自带的404页面,改了nginx配置也不行

5年前 评论
白小二

网上都是这种教程,那问题来了,怎么把这搭建,并且修改过的环境迁移到线上呢

4年前 评论
UKNOW

如果多个项目 有的项目是使用php5 有的是使用php7怎么配置?

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!