众所周知docker是当前最火热的容器引擎,由于沙盒特性,即插即用和快速方便的部署能力受到广大用户的喜好。php
docker一般有两种执行方式,一种是直接经过命令行加参数拉取、运行容器,但由于用户的实际应用是复杂的,可能由多个容器组成,容器间存在关系,使用上可能须要重复屡次部署。 所以,须要必定的编排部署能力来简化这个操做。html
另外一种方式就是今天咱们介绍的,经过编排文件部署的方式,也就是compose方式运行容器。Compose运行须要有对应的yml文件以及Dockerfile。 经过调用Docker/Swarm的API进行容器应用的编排。node
laradock就是一个利用Compose方式运行容器,功能完整的PHP集成研发环境。linux
你们能够去官网 ,或者国内的服务提供商(如Daocloud)下载相应操做系统的安装文件(或者在线安装),这里就很少叙述了。nginx
若是是linux系统的话,安装完docker,还须要单独安装docker-compose。
git clone https://github.com/laradock/laradock.git
laravel
cp env-example .env
git
打开.env文件,修改公共变量APPLICATION的路径,默认路径是github
APPLICATION=../
chrome
咱们能够根据须要作相应修改,通常状况下,咱们的主机上会有一个或多个项目,这样的话作以下设置:docker
APPLICATION=../www/
这是什么意思呢,咱们来看下docker-compose.dev.yml文件
version: "2" services: ### Applications Code Container ############################# applications: volumes: - ${APPLICATION}:/var/www
咱们看到咱们配置了一个容器applications,它映射了一个数据卷,把本地的www目录,映射到了容器内的/var/www目录
查看相关编排文件配置
version: '2' services: ### Applications Code Container ############################# applications: image: tianon/true ### Workspace Utilities Container ########################### ### 为了排版,略作修改,省略了其它部分 workspace: build: context: ./workspace volumes_from: applications ### PHP-FPM Container ####################################### ### 为了排版,略作修改,省略了其它部分 php-fpm: build: context: ./php-fpm volumes_from: applications ### NGINX Server Container ################################## ### 为了排版,略作修改,省略了其它部分 nginx: build: context: ./nginx volumes_from: applications
咱们看到,刚才在compose-dev.yml定义的容器applications基于镜像:tianon/true。
容器workspace是一个操做台容器,能够经过配置文件安装各类须要的软件如:node,yarn等等,它和php-fpm、nginx等容器都共用容器applications的数据卷,也就是说这几个写着volumes_from: - applications的容器中的路径/var/www
都共用本机目录../www
编辑nginx主机配置文件laradock/nginx/sites
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name localhost; root /var/www/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_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } location /.well-known/acme-challenge/ { root /var/www/letsencrypt/; log_not_found off; } }
由于laradock项目默认是为laravel框架配置的,因此咱们看到网站的根目录默认设置为/var/www/public
。这里咱们把根目录修改成咱们须要的路径,如 /var/www/your-project-name/public
。若是你的项目不是基于laravel的,则能够把public去掉,或作相应修改。
若是你使用Chrome 63以上版本进行开发,就不要把server_name设置为.dev结尾 为何?。 你能够用.localhost
,.invalid
,.test
,.example
等代替,我的建议用.localhost
,这样就不用修改容器的主机的host文件了,他会默认指向IP127.0.0.1。
docker-compose up -d nginx
到这里laradock的配置解析基本就介绍完毕了,小伙伴们赶快写个hellow world试试吧,下一篇文章咱们来说讲如何经过容器,让咱们的网站支持https协议。