介绍
采用docker-compose来做容器编排,包含nginx-server、php两个容器,mysql采用宿主机上的mysql,项目代码、产生的日志通过数据卷和容器进行同步,防止删除容器丢失了数据。其中redis,mysql,MongoDB可以根据需要自动添加容器。git还是采用宿主机git。
准备
前提:本地安装好docker环境
mac: 需要安装docker-sync
本地80端口不要占用,如果不用80请修改config下的配置文件
默认hostname为 my.dev.me, 如果需要改自行处理
使用步骤
- 解压压缩包
- 克隆或者复制代码到www目录
- 如果是从git克隆的代码,打开docker-compose.yml文件,取消以下代码注释:
# command:
# - /bin/sh
# - -c
# - |
# cd /var/www/html
# composer install
# composer dump-autoload -o
# composer clearcache
- 如果不是第一次执行,需要检查第三步代码是否注释,(如果需要更新依赖包,根据情况打开command下的命令)
- 检查.env文件是否生成,如果不存在,手动生成
- 根据自己需要配置.env 文件,其中数据库请用宿主机信息,host固定为(host.docker.internal)
- 执行docker-compose up -d
常用命令
- 关闭
docker-compose down
- 重启nginx
docker-compose restart nginx
- 查看是否启动容器状态
docker-compose ps
- 查看容器启动时错误日志,用于检查那里不对
docker-sompose logs nginx
附录
Mac安装docker-sync
gem install docker-sync
如果要使用unison方式,需要安装:
brew install unison
brew install eugenmayer/dockersync/unox
如果要使用rsync方式,需要安装:
brew install rsync
日常使用
docker-compose down
docker-compose stop
docker-compose start
docker-compose restart
mac使用
- 修改docker-compose.yml文件中的注释,如下
# Mac使用,打开注释
# - dolife-sync:/var/www/html/:rw
- ./www:/var/www/html/:rw # windows 系统使用注释
# Mac操作系统使用,需要先执行docker-sync start
# volumes:
# dolife-sync:
# external: true
- 执行docker-sync start
mac使用遇到宿主机改文件无法同步到容器中的处理办法
进入容器:
docker exec -it 容器名 /bin/bash
在容器中执行:
cd /var/www
chown -r www-data:www-data html
涉及的文件: github