把 LaraDock 的 v2 版本修改了一下,换成国内镜像

话说最近不知道为何长三角地区科学上网的速度慢了好多,好多国外开源站点更新代码速度都让人无法忍受。
正遇到想整一下docker环境就顺便看了一下很早以前就有了的Laradock/laradock项目,已然更新到v2版本了,扩展性已经强大了许多。不过如果按照官方的方式,海外用是挺方便,国内的更新速度就比较糟心了。

So,我改了个适配国内的版本:
https://github.com/nickfan/laradock

由于是仅针对国内用户加速的,估计发PR人也不会用,各位老司机有啥好提议直接Fork我的版本发PR给我,便宜我好了,哈哈 :D

特性:

  • php composer 换成国内的源(phpcomposer)
  • 已经加了常用的composer全局工具(box/phpcs/envoy等)
  • npm和yarn换成国内的源 (淘宝)
  • nginx的基础镜像 alpinelinux 换成国内源(中科大)
  • 其他ubuntu镜像 换成国内源(阿里云)

提示:

docker本身的Registry Mirrors可以设置为http://hub-mirror.c.163.com 加速镜像的下载,或者去注册个阿里云开发者账号登录后可以享用免费的阿里云镜像加速服务。

依赖:

你本地已安装好docker for mac / docker for windows 或者 docker toolbox (新版我没在docker toolbox下测试过,不过应该和工具无关),老司机略过。

安装使用

  • 参考

主要请参考官方的说明文档:

@appleboy 有翻译过中文版说明,这里直接链接一下:https://github.com/LaraDock/laradock/blob/...

  • 下载

(假设你的workspace就是~/Code,你的各个项目都在 ~/Code/project1,project2等等下面)

git clone https://github.com/nickfan/laradock.git ~/Code/laradock-nickfan
  • 配置验证auth.json

在开始使用前记得按workspace/auth.json.example复制并设置一下workspace/auth.json文件添加自己的github的Personal Access Token到配置的对应内容里

  • 配置挂载路径

修改docker-compose.yml中关于applications>volumes中关于项目代码路径的映射关系:

            - ../project1/:/var/www/project1
            - ../project2/:/var/www/project2

So 你workspace下的~/Code/project1路径被映射成卷中的路径/var/www/project1

  • 配置nginx的站点设置

按nginx/sites/sample.conf.example创建nginx/sites/project1.conf,nginx/sites/project2.conf文件
修改一下具体的域名配置和路径设置,这里假设都是laravel的项目

server {

    listen 80;
    listen [::]:80;

    server_name project1.dev;
    root /var/www/project1/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}
  • 启动容器

首次会比较慢,需要下载镜像做初始化等等,后续的启动就比较快了

docker-compose up -d nginx mysql

本地的80端口Docker服务中的nginx要用,3306端口Docker服务中的mysql要用,如果有进程占用了,先结束对应的进程再执行此命令,如果是docker toolbox因为不是本地forward所以不用担心ip绑定的的域名绑你NAT设备的IP

本地绑定对应的项目域名到/etc/hosts

127.0.0.1 project1.dev project2.dev

如果你是用的Docker Toolbox(Virtualbox)而不是Native的版本(Docker for mac 或Docker for Windows 其实是hypervisor 轻量级的虚拟技术) 记得绑定的ip是你的Docker服务NAT设备的IP

  • 进入命令行
docker-compose exec --user=laradock workspace bash
  • 关闭服务环境
docker-compose down

另外Laradock还支持beanstalk redis等等服务以组件的形式提供服务。

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer 于 7年前 加精
nickfan
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 35
Ryan

熊哥牛逼

7年前 评论

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories

7年前 评论
nickfan

@yzzshmily 嗯,没查到阿里云的镜像,只看到中科大的了,回头我按你的改一下。

7年前 评论
chenyuanqi

可惜 docker 对 Windows 的支持还不是很好

7年前 评论
nickfan

@chenyuanqi docker toolbox还算能用吧,virtualbox算是虚拟机里的小个子了,虽然还不是很轻量。
docker for windows 貌似是可以在win10 pro版和windows 2016 server上跑起来的hypervisor 服务,比virtualbox那是轻快多了。

7年前 评论
nickfan

@yzzshmily 已更新成阿里云的了。

7年前 评论

好像里的hhvm 安装还是会出错的 挂ss 也不行

7年前 评论
nickfan

@Denniskevin hhvm 貌似中国镜像
https://docs.hhvm.com/hhvm/installation/li...
的域名已然不能正常访问了,
官方来自fb的你懂得就指望不上了,还是等php7.1吧

7年前 评论

设置时区: - TZ=Asia/Shanghai

7年前 评论
nickfan

@yzzshmily 嗯,因为做的国际业务,所以没改时区,不过中文源的话,我还是该一下好了。

7年前 评论
nickfan

@yzzshmily 又想想算了,这个TZ设置可以在docker-compose.yml中设置,没必要改源设置,需要的童鞋自己设置一下好了。

7年前 评论

熊大,我想安装ioncube的扩展,怎么修改dockerfile呢?谢谢!

7年前 评论
nickfan

@Insua 没用过ioncube扩展,不过如果有对应的在线下载地址的话,你可以参考workspace或者php-fpm的Dockerfile文件中关于PHP Aerospike的区段,编写你自己需要的内容段,无非是wget,tar,sed等等流程处理,学习一下不难的。

7年前 评论
Destiny

:punch: 熊哥。。6

7年前 评论

过来支持~~~

7年前 评论

按照教程安装完了,docker mysql可以登录

但是通过浏览器访问时,提示 MySQL connect refuse[2000],这个是什么问题?@nickfan

6年前 评论
nickfan

@linzi007
嗯,这个问题算是老梗了,laradock的github的issues列表里有讨论过。
如果你是win10的轻量级虚拟机的话,env里的连接配置也就是

host=localhost

要统一改成对应的container的名称,比如DB_HOST如果用mysql的话要改成mysql,

host=mysql

同理redis服务的部分配置的host要改成redis

file

官方也出了文档站点,注意自己看说明:
http://laradock.io/

6年前 评论

您好,我使用docker toolbox ,docker-compose.yml 中的- ../project1/:/var/www/project1没有映射到是什么问题,用的laradock版本是您这个。

6年前 评论
nickfan

@ralph 能说具体点么,比如贴出你的docker-compose.yml的配置和你运行命令的错误提示贴图。

6年前 评论

@nickfan 没有报错,就是我ssh workspace,/var/www/demo没有内容
file

6年前 评论

@nickfan 如果我使用Kitematic更改文件夹的挂载会提示我“检查文件夹是否存在或没有read/write权限”,但我文件夹已经是最高权限,我系统是win10 家庭版,非专业版

6年前 评论
nickfan

@ralph 据我所了解到的,win10非专业版 应该是没有支持 hypervisor 轻量级的虚拟技术
你只能用 docker toolbox(virtualbox)的版本

file

6年前 评论

@nickfan 对的,我同的就是docker toolbox

6年前 评论
nickfan

@ralph docker toolbox在virtualbox的这部分,我自己本地是mac,也没有win10home版环境测试你的问题,或许你可以在laradock官方的issue列表里查找一下你的问题的答案或者发起issue等待一下别人的回复。

6年前 评论

@nickfan 你好熊哥,不知道您有没有遇没遇到没有映射不成功的情况,因为我换了mac一样映射不成功

6年前 评论
nickfan

。。。这我还真没遇到过。。。。,你用官方的版本试试呢?

6年前 评论

老哥,可以继续维护下去吗

6年前 评论

@ralph 问下,你的laradock没有映射不成功的情况,解决了吗?我也遇到项目映射不成功的情况。

6年前 评论

@动感超波 我当时怀疑是box的问题,所以我换成在vagrant里面装docker,就可以

6年前 评论

@nickfan 请问下,我安装的时候遇到这个,请问怎么解决啊
Killed
ERROR: Service 'workspace' failed to build: The command '/bin/sh -c if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then composer global install ;fi' returned a non-zero code: 137

6年前 评论

NVM 设置的 NVM_NODEJS_ORG_MIRROR 参数无作用(NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node)
依旧会 Downloading https://nodejs.org/dist/v10.6.0/node-v10.6......
从官方下载 node 国内需要等大概 8 分钟.
请问大神怎么修复一下这个问题

5年前 评论

file
出现这个异常,不知道怎么修改

5年前 评论

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