laradock开发实践

文章目录

  1. 1. laradock
    1. 1.0.1. DIY(do it yourself)
    2. 1.0.2. DRY(dont repeat youself)
    3. 1.0.3. 人生苦短,我用docker
  2. 1.1. 特点
  3. 1.2. docker是什么
  4. 1.3. 对比传统虚拟机总结
  5. 1.4. 三个基本概念
  6. 1.5. 常用命令
  7. 1.6. laradock的结构
  8. 1.7. 彩蛋
    1. 1.7.1. 快捷操作
    2. 1.7.2. xdebug监听不变的host ip
    3. 1.7.3. 本地dns泛解析
      1. 1.7.3.1. 安装操作
  9. 1.8. End

此文是我用marp展示ppt拿过来的,可能看着不太明白,抱歉,我太懒~

laradock

  • DIY(do it yourself)

  • DRY(dont repeat youself)

  • 人生苦短,我用docker


特点

  • 易组合:在PHP版本切换、数据库引擎、软件组合
  • 分而治之:一个软件,一个容器,比如:PHP-FPM, NGINX, PHP-CLI…
  • 可信镜像:所有镜像继承自一个官方基础镜像(Trusted base Images)
  • 方便配置,且使用最新Docker Compose
  • 每周都会有更新…
  • 快速的镜像构建(GFW)

文档


docker是什么

  • 2013年初开源项目,基于go语言
  • 轻量级
  • 操作系统虚拟化

对比传统虚拟机总结

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容 一般几十个

虚拟机
docker


三个基本概念

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
注意一个镜像不能超过 127 层

安装


常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#镜像
docker images #列出本地镜像
docker rmi training/sinatra #删除(在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器)
docker run -t -i ubuntu:14.04 /bin/bash #
docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2 #更新镜像
docker tag 5db5f8471261 ouruser/sinatra:devel #修改标签
docker build ${dockerfile_dir} #Dockerfile 构建
docker save -o ubuntu_14.04.tar ubuntu:14.04 #保存
docker load --input ubuntu_14.04.tar #导入
#容器
docker ps #查看容器信息
docker rm #删掉容器(-f 删除运行中)
docker inspect #查看指定容器详细信息(可获取ip,pid等信息)
docker logs insane_babbage #查看容器log
docker port CONTAINER [PRIVATE_PORT[/PROTO]] #查看端口映射
docker start|stop|restart insane_babbage #启动终止重启
docker attach insane_babbage #进入后台运行的容器 -d(推荐nsenter)
docker export 7691a814370e > ubuntu.tar #导出快照
cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0 #导入快照
## docker hub
docker search #搜索镜像
docker pull #下载
docker push #推送(需登录)

laradock的结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
├── laradock 
│   ├── _guides
│   ├── docker-compose.yml #compose 配置
│   ├── docs
│   ├── elasticsearch
│   ├── hhvm
│   ├── logs #nginx日志;xdebug日志
│   ├── mariadb
│   ├── memcached
│   ├── mongo
│   ├── mysql
│   ├── nginx # nginx 容器配置
│   ├── php-fpm #php-fpm 容器配置
│   ├── phpmyadmin
│   ├── rabbitmq
│   ├── redis
│   ├── workspace #工作台
│   └── xdebugPhpFpm #动态设置 xdebug 是否启用(需 build 时先安装)
└── website #网站项目
├── afp
├── ams
├── inncms

彩蛋

快捷操作

docker快捷命令:.bashrc_docker

xdebug监听不变的host ip

set host ip never changed

本地dns泛解析

hosts泛解析

1
2
3
# 这里ams不是laravel框架,我做了过滤
server_name ~^(?<project>\b(?!ams\b).+)\.laradock\.dev$;
root /var/www/$project/public;

安装操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 安装 dnsmasq
brew install dnsmasq
sudo cp -v $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons

# 添加本地dns解析服务器
[ -d /etc/resolver ] || sudo mkdir -v /etc/resolver
sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/dev'

# 配置泛解析 (域名后缀自行指定,这里为 .dev)
sudo mkdir -p $(brew --prefix)/etc/
cat > $(brew --prefix)/etc/dnsmasq.conf <<-EOF
listen-address=127.0.0.1
address=/.dev/127.0.0.1
# keep nameserver order of resolv.conf
strict-order
EOF

# 启用dnsmasq
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

# 若更新dnsmasq后,需重启以应用
sudo launchctl stop homebrew.mxcl.dnsmasq
sudo launchctl start homebrew.mxcl.dnsmasq
sudo killall -HUP mDNSResponder

End

  • docker for mac

  • 基于开发的一些修改(踩坑)

    • git@github.com:NewbMiao/laradock.git (dev分支,master定期手动同步官方分支)
      • xdebug 配置
      • 全局安装composer及hirak/prestissimo(可加速composer)
      • ssh开启 可配合phpstorm 指定CLI interpreter
      • 关闭nginx open_file_cache
      • composer国内地址替换;aliyun源替换
  • 能番羽墙最好,不然,可以参考下边
1
2
3
4
5
6
7
8
9
10
11
12
## apt-get替换源
# 另外,在国内使用 docker(以 ubuntu 为例), Dockerfile 第一个执行的命令最好为:
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list \
&& apt-get update --fix-missing \
&& apt-get -y upgrade

## composer替换源
RUN composer config -g repo.packagist composer https://packagist.phpcomposer.com

## ssh workspace(推荐还是exec方式)
chmod 0600 workspace/insecure_id_rsa
ssh -i workspace/insecure_id_rsa -v root@laradock.dev -p2222
如有疑问,请文末留言交流或邮件:newbvirgil@gmail.com 本文链接 : https://newbmiao.github.io/2017/03/14/laradock-in-action.html