Docker开发环境

推荐使用Docker方式搭建开发环境,项目负责人需在项目根目录下配置docker-composer.yml,参考案例如下:

version: "3"

services:
   frameworks.dev:
     image: tinson/centos6.8-php7.0
     expose:
       - 80
     depends_on:
       - memcache.dev
       - redis.dev
     volumes:
       - ".:/www/frameworks"
     restart: always
     environment:
       VIRTUAL_HOST: api.frameworks-dev.hetiansu.com,admin.frameworks-dev.hetiansu.com
       YII_ENV: "dev"
     container_name: frameworks.dev
     entrypoint: "/www/frameworks/assets/sh/entrypoint.sh"
   memcache.dev:
     image: memcached
     restart: always
     container_name: memcache.frameworks.dev
   redis.dev:
     image: redis
     restart: always
     container_name: redis.frameworks.dev

networks:
  default:
    external:
      name: nginx-proxy

搭建Docker环境

启动项目服务

$ git clone {项目git地址} {本地项目目录}   # 拷贝代码仓库到本地目录
$ cd {本地项目目录}         # 进入本地目录
$ docker-compose up --force-recreate --remove-orphans -d
$ docker ps       # 查看执行的容器
$ docker exec -it {container_name} sh # 登入进容器

配置本地解析

给项目相关域名配置本地host 127.0.0.1 admin.frameworks-dev.hetiansu.com api.frameworks-dev.hetiansu.com

附加说明

如果本地已经有搭建了Web服务器,上述启动Nginx-Proxy会有80端口冲突问题,可修改端口映射规则,命令如下

$ docker run -d -p 20001:80  --name nginx-proxy --net 	nginx-proxy --restart always -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy

另外需在Web服务配置代理转发,以下为Nginx的配置模板

server {
	listen 80;
	server_name admin.frameworks-dev.hetiansu.com api.frameworks-dev.hetiansu.com;
	location / {
			proxy_redirect off;
        	proxy_set_header Host $host;
        	proxy_set_header X-Real-IP $remote_addr;
        	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        	proxy_pass   http://127.0.0.1:20001;
	}
}

docker相关命令

一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。完整的命令列表如下:

        build 构建或重建服务
        help 命令帮助
        kill 杀掉容器
        logs 显示容器的输出内容
        port 打印绑定的开放端口
        ps 显示容器
        pull 拉取服务镜像
        restart 重启服务
        rm 删除停止的容器
        run 运行一个一次性命令
        scale 设置服务的容器数目
        start 开启服务
        stop 停止服务
        up 创建并启动容器

常用docker命令

创建容器: docker-compose up --force-recreate --remove-orphans  前台启动(-d 后台启动)
进入容器: docker exec -it ${appName}.dev sh
开启容器: docker-compose start
停止容器: docker-compose stop
删除容器: docker-compose down