一步步教你如何使用 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 协议》,转载必须注明作者和本文链接
先收藏,后续实践:smile:
@fmaple 嗯嗯,好的噢!
按国内网络环境fork修改的版本现已更新到最新v4版本
https://github.com/nickfan/laradock
可重新star哈 :joy:
其实我想问用
docker
和用Nginx/Apache
有什么不同和好处吗?@sethhu docker是容器,nginx 和apache是web软件。 你可以这样理解:docker是一个运行操作系统的环境,而我们平常所说的nginx容器,意思就是这个容器只运行了nginx这个服务。
@nickfan 这是你自己根据laradock修改的吗?
@Aaron
是的,根据目前最新的v4的版本重新改的版本
composer换国内镜像
node,yarn换国内镜像(淘宝)
ubuntu换国内镜像
修复官方的一个change_source的Dockfile中的语法问题。
@Aaron 你也可以和官方的repo比较一下我改了哪些内容,定制修改的比较符合我自己的习惯,就没发PR了。
好像默认的change_source的环境变量没有效果,所以改默认值为true了,不适合发PR,毕竟老外使用国内镜像的还不多。
laradock里面的redis,默认是没有配置文件redis.conf的,我看了下他的dockerfile需要我提供redis.conf文件,然后COPY进去,我也提供了一个和他版本对应的redis.conf文件,然后放开copy注释,以及cmd运行的时候是指定配置文件的,然后这个redis容器总是启动不起来,能否提供一个redis.conf,因为如果做集群就需要这个配置文件
@nickfan 嗯嗯,其实我也克隆了laradock,自己也做了些更改后,部署在生产环境上。比如有些Dockerfile文件add 命令复制文件的,我改成使用映射方法。因为这样我直接修改文件后,再重启容器就可以生效了。如果使用add命令添加的文件,又要重写打包镜像,感觉很麻烦呢。
@jdxia 明天我到公司看看。 如果容器启动不成功,你使用 docker-compose log 容器名 ,就可以看错误记录,根据错误记录就好差错了。
先收藏,再实践。
@Aaron redis的日志打印出来是这个
docker-compose ps看到redis容器的退出码是Exit 0,但是这个容器根本启动不了
@jdxia
这是我的redis/Dockerfile文件
这是docker-compose.yml文件
@jdxia 你用docker-compose up -d redis ,然后用docker ps -a ,看看容器状态
@nickfan 官方的 change_source 存在什么语法问题?
关键是Dockfile里RUN是单条Dockfile环境的指令语法,RUN 指令中的内容不可能嵌套 RUN指令,只能是单条的bash语句。
@Aaron 经排查,发现,容器中,如果是指定配置文件启动方式,redis.conf文件中这一行
不要改为yes,改为yes,他会启动起来,但是一启动就会退出了,而且退出还是正常退出,因为我看容器退出的状态是Exit(0),返回值是0,但是不太明白为什么配置文件设置后台启动就会给我自动退出?
问题解决了
@jdxia 我忘给你说了,所有在docker运行的软件,都不能后台运行。必须设置为前台模式。具体什么原因,我也不太清楚哈!
@nickfan 我运行后没问题呀?虽然看着是语法错了。o(∩∩)o...哈哈,已改,不过,为啥你不将 env 的默认值 change_source 改为 true, 工程量好浩大的感觉。
change_source的默认值我fork的版本已改为true的,所以没有PR
另外官方v4版目前而言,
修改源的只有alphine的系统的源,而实际上还有:ubuntu的源,composer的源,nodejs,yarn的源都没有添加对应的处理,我只是借这个参量完善一下对应的处理,但其实理想的方式应该是repo_source='cn'这样的方式,然后不同区域标识可以用不同的源集合。
也许以后的laradock的版本会完善这部分的工作,目前而言,对国内环境,我改的版本够用,如果有不同区域的需求,自行修改对应上面提到的alphine,ubuntu,composer,nodejs,yarn对应区域的源即可。
@nickfan 恩。
@nickfan 之所以修改 nginx 的源是因为以前 nginx 的基础 alpine 镜像在下载某些文件会出错,因为官方源里没有那个文件。后来修复了这个问题。但是国外下载慢了点。然后其他镜像构建的速度能忍受,就没管了。o(∩∩)o...哈哈、o(∩∩)o...哈哈
@nickfan
嗨,朋友,我刚才在你的laradock的fork版本中提交了一份PR,你可以看下
@jdxia 已合并,非常感谢,一点小建议,一般而言,用test做样例域名会让大多数人比较好理解。
@nickfan 可是在postman中这是要https的,,因为HSTS对于新手来说,他会懵逼的
@jdxia 额,我记得是dev的域名吧。
@nickfan Service 'mysql' failed to build: unexpected EOF 雄哥,报这个错啊
@韩槑槑
https://github.com/laradock/laradock/issue...
有问题先查issues列表
请问怎么使用navacite链接docker里面的mysql ip地址要写哪个
win7 下,使用 docker toolbox 安装的 laradock 使用 localhost 访问不了页面,使用 docker-compose ps 命令查看服务都 up 的。
请问,laradock能否进行vue-cli开发?
@nickfan
用postman 调接口都返回 laradock 自带的404页面,改了nginx配置也不行
网上都是这种教程,那问题来了,怎么把这搭建,并且修改过的环境迁移到线上呢
如果多个项目 有的项目是使用php5 有的是使用php7怎么配置?