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

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

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

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

特性:#

  • 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 于 8年前 加精
nickfan
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 35
Ryan

熊哥牛逼

8年前 评论

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

8年前 评论
nickfan

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

8年前 评论
chenyuanqi

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

8年前 评论
nickfan

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

8年前 评论
nickfan

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

8年前 评论

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

8年前 评论
nickfan

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

8年前 评论

设置时区: - TZ=Asia/Shanghai

8年前 评论
nickfan

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

8年前 评论
nickfan

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

8年前 评论

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

8年前 评论
nickfan

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

8年前 评论
Destiny

:punch: 熊哥。。6

8年前 评论

过来支持~~~

8年前 评论

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

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

8年前 评论
nickfan

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

host=localhost

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

host=mysql

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

file

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

8年前 评论

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

7年前 评论
nickfan

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

7年前 评论

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

7年前 评论

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

7年前 评论
nickfan

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

file

7年前 评论

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

7年前 评论
nickfan

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

7年前 评论

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

7年前 评论
nickfan

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

7年前 评论

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

7年前 评论

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

7年前 评论

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

7年前 评论

@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

7年前 评论

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 分钟.
请问大神怎么修复一下这个问题

6年前 评论

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

6年前 评论