虽然这篇叫Docker环境搭建,但是是用了一个别人写好的配置文件,为什么要用别人写好的呢?因为第一节省了我们学习的成本,类似一键安装环境的东西。二节省了我们的构造docker和测试docker的时间。三也省略了我们在去写额外的服务器配置。 这里我选用LaraDock,因为它的容器多,不仅仅用来作web服务器。LaraDock官网 以下,所说的文件夹和目录是同一个意思,只不过不同的操作系统叫法不一样而已。
这两个各自的官网上都有,这就不多介绍了。安装也比较方便,没什么难点
这里我们要更改下Docker源,不然会一直提示连接不了服务器,即便连接上也会下载巨慢。 这里我选择DaoCloud
首先注册DaoCloud号,只有注册以后,才能用它的加速服务,免费的。所以我们要感谢DaoCloud的免费。访问网址http://www.daocloud.io/mirror#accelerator-doc,上面有根据系统如何更改镜像源,不复杂,很简单就完成了(PS:这个网址必须在登录的情况下才能访问到,免费的服务,为了以后大家都用着舒心就支持下,注册下)(PS:如果你碰到提示 ERROR: Service 'mysql' failed to build: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.65.1:53: too many redirects 这个错误提示就是没有连接上镜像的服务器,多试几次就好了)
这里以新项目为例,如果是在已有的项目的情况下,请参考LaraDock官方文档
git clone https://github.com/Laradock/laradock.git这里会下载一些docker配置文件,git下来后有个laradock目录,里面有很多容器,到时候需要什么容器就加载什么容器就可以了,非常方便。
修改刚刚复制的配置文件,最上面有行Application的配置,是指你项目的位置所在,这里指的是你的项目要放在哪个文件夹下,把APPLICATION=../改为APPLICATION=../project-z/,当然这个后期也是可以更改的
虽然我把项目放在了project-z目录下,其实nginx真正访问到的位置为 project-z/public/
### Application Path # Point to your application code, will be available at `/var/www`. APPLICATION=../project-z/这个目录的意思是project-z文件夹的父目录,是和project-z文件夹在同一级的project-z目录 如果目录不存在的话一般生成容器的时候会自动创建,如果生成的时候没创建或者生成容器的时候提示找不到目录的话,就新建好这个文件夹,因为linxu里会有权限的问题。
以后如果启动服务器的话,就执行这条命令就行了。注意,第一次执行这个命令会先从网上服务器里下载docker镜像,然后在用镜像生成容器,有了容器以后,下次启动就直接启动容器了。 第一次执行因为要下载镜像,随便一个镜像都很大,所以,如果不更改Docker源的话,基本上就无望了。好多人也都是在这步放弃的,即便你更改了Docker源有时候也会下载失败,多执行几次这条命令就,直到执行成功。
docker-compose up -d nginx mysql(-d,表示后台启动。workspace 和 php-fpm 将运行在大部分实例中, 所以不需要在 up 命令中加上它们。) 安装完成,并且启动以后的效果,应该类似这样的
Starting laradock_mysql_1 ... Starting laradock_mysql_1 Recreating laradock_applications_1 ... Recreating laradock_applications_1 ... done Recreating laradock_workspace_1 ... Recreating laradock_workspace_1 ... done Recreating laradock_php-fpm_1 ... Recreating laradock_php-fpm_1 ... done Recreating laradock_nginx_1 ... Recreating laradock_nginx_1 ... done会发现启动的时候有些显示的是done的,这些不用管,我琢磨着应该是重复启动相同的容器,然后端口被占用所造成的失败。
在本地的浏览器上输入http://localhost/,会发现提示404,这是因为我们虽然创建了project-z,但是并没有在里面新建文件,在里面放入一个新建的index.php文件。 放入index.php文件后重新访问,发现还是提示404,其实,这是因为ngixn默认配置是在public目录下的。在project-z文件夹里面新建一个public目录,然后再在里面放入index.php发现就能访问到了。
到这里其实已经完成了,因为已经能访问到项目了,以后再次启动服务器的时候只需要运行docker-compose up -d nginx mysql就能直接启动服务了
执行完这条命令后,会发现你的用户已经变更了,说明你已经进入到容器里面了
安装laravel项目 composer create-project laravel/laravel coolapp(PS:为什么要在容器里安装,而不直接在本地直接安装呢?这个我琢磨着应该是权限的问题,因为linxu和mac会有用户权限和文件夹权限这一说法)
按照安装laravel的要求,给一些目录设置写权限进入laravel项目目录下,更改coolapp目录里的.env的laravel配置文件为DB_HOST=mysql
那么问题来了,mysql的用户名密码以及数据库的名字是什么?这个可以查看laradock目录下的.env配置文件,然后在文件里搜索mysql关键字,你就会看到mysql的一些配置,数据库,密码,用户名等等。
原文链接:Dennis`s blog 参考链接: 基于 LaraDock 在 Docker 中快速构建 Laravel 应用系列教程 —— 搭建开发环境 laradock文档 开始使用Docker for Mac