docker容器的Linux对Windows支持并不是很高,他只对C:\Users 目录下进行挂载,其他目录都没有办法挂载,除非用VirtualBox修改这个虚拟机的共享目录设定,否则在虚拟机里只能看到C:\Users以下的文件

比如

nginx: image: nginx:alpine ports: – “84:80” – “443:443” volumes: – /c/Users/zhang/dnmp/www/:/var/www/html/:rw – /c/Users/zhang/dnmp/conf/conf.d:/etc/nginx/conf.d/:ro – /c/Users/zhang/dnmp/conf/nginx.conf:/etc/nginx/nginx.conf:ro – /c/Users/zhang/dnmp/log/:/var/log/dnmp/:rw # – .:/usr/share/nginx/html/:rw # – /c/Users/zhang/tt:/etc/nginx/conf.d/:ro # – ./conf/nginx.conf:/etc/nginx/nginx.conf:ro networks: – net-php

以dnmp镜像为例子

  1. 本地安装gitdockerdocker-compose
  2. clone项目:
    $ git clone https://github.com/yeszao/dnmp.git
    
  3. 如果不是root用户,还需将当前用户加入docker用户组:
    $ sudo gpasswd -a ${USER} docker
    
  4. 启动:
    $ cd dnmp
    $ docker-compose up
  5. 运行localhost查看是否成功   这是项目的演示效果,PHP代码在这个目录:./www/site1/

 

 

使用其他PHP版本?

默认情况下,我们启动的是最新版本的PHP,命令如下:

$ docker-compose up

docker-compose stop后,我们可以用下面的命令启动PHP5.4PHP5.6:

$ docker-compose -f docker-compose54.yml up
$ docker-compose -f docker-compose56.yml up

如果该版本是第一次启动,那么还需要加上--build参数构建,不然还是会启动最新版本:

$ docker-compose -f docker-compose54.yml up --build
$ docker-compose -f docker-compose56.yml up --build

在版本切换时,我们不需要修改任何配置文件,包括Nginx配置文件和php.ini等, 除非是代码兼容错误,否则切换版本后应该都能正常工作。

 

本项目的演示站点有两个:

  • http://www.site1.com (同 http://localhost)
  • https://www.site2.com

要预览这两个站点,请在主机的hosts文件中加上如下两行:

127.0.0.1 www.site1.com
127.0.0.1 www.site2.com
  • Linux和Mac的hosts文件位置: /etc/hosts
  • Windows的hosts文件位置: C:\Windows\System32\drivers\etc\hosts

然后通过浏览器这两个地址就能看到效果,其中:

  • Site1和localhost是同一个站点,是经典的http站,
  • Site2是自定义证书的https站点,浏览器会有安全提示,忽略提示访问即可。

 

使用composer

dnmp默认已经在容器中安装了composer,使用时先进入容器:

$ docker exec -it dnmp_php_1 /bin/bash

然后进入相应目录,使用composer:

# cd /var/www/html/site1
# composer update

##常规用法

docker-compose up -d #托管启动
docker-compose ps #查看状态
docker-compose restart #重新启动
docker rm -f $(docker ps -qa) #移除所有
docker rm `docker ps -a -q`  #删除非运行的容器 
docker rmi -f `docker images | grep '<none>' | grep -v -E 'mysql|alpine' | awk '{print $3}'` #删除docker无引用的镜像

##Reload例子

docker exec -it dnmp_nginx_1 /usr/local/openresty/nginx/sbin/nginx -s reload

from:github

父组件如何触发子组件中的方法
 ref="chName"
 this.$refs.chName.子组件方法("传入参数")
子组件调用父组件方法
 传入方法  @chFunNmae="faFunNmae"
 this.$emit(chFunNmae,传入参数);

由于业务需要database.config里面有两个mysql配置

非默认项回滚一直不生效

解决方案,DB后添加配置项

DB::beginTransaction();

改为

DB::connection(‘nowyear’)->beginTransaction();

同理

DB::commit();

改为

DB::connection(‘nowyear’)->commit();

DB::rollBack();

改为

DB::connection(‘nowyear’)->rollBack();