LINUX-NGINX-MYSQL-PHP的docker环境搭建

介绍


采用docker-compose来做容器编排,包含nginx-serverphp两个容器,mysql采用宿主机上的mysql,项目代码、产生的日志通过数据卷和容器进行同步,防止删除容器丢失了数据。其中redis,mysql,MongoDB可以根据需要自动添加容器。git还是采用宿主机git。

准备


前提:本地安装好docker环境

mac: 需要安装docker-sync

本地80端口不要占用,如果不用80请修改config下的配置文件

默认hostname为 my.dev.me, 如果需要改自行处理

使用步骤


  1. 解压压缩包
  2. 克隆或者复制代码到www目录
  3. 如果是从git克隆的代码,打开docker-compose.yml文件,取消以下代码注释:

    1
    2
    3
    4
    5
    6
    7
    8
    #    command:
    # - /bin/sh
    # - -c
    # - |
    # cd /var/www/html
    # composer install
    # composer dump-autoload -o
    # composer clearcache
  4. 如果不是第一次执行,需要检查第三步代码是否注释,(如果需要更新依赖包,根据情况打开command下的命令)

  5. 检查.env文件是否生成,如果不存在,手动生成
  6. 根据自己需要配置.env 文件,其中数据库请用宿主机信息,host固定为(host.docker.internal)
  7. 执行docker-compose up -d

常用命令


  • 关闭

    1
    docker-compose down
  • 重启nginx

    1
    docker-compose restart nginx
  • 查看是否启动容器状态

    1
    docker-compose ps
  • 查看容器启动时错误日志,用于检查那里不对

    1
    docker-sompose logs nginx

附录


Mac安装docker-sync
1
gem install docker-sync

如果要使用unison方式,需要安装:

1
2
brew install unison
brew install eugenmayer/dockersync/unox

如果要使用rsync方式,需要安装:

1
brew install rsync

官方文档

日常使用
1
2
3
4
docker-compose down
docker-compose stop
docker-compose start
docker-compose restart
mac使用
  1. 修改docker-compose.yml文件中的注释,如下
    1
    2
    3
    # Mac使用,打开注释
    # - dolife-sync:/var/www/html/:rw
    - ./www:/var/www/html/:rw # windows 系统使用注释
1
2
3
4
# Mac操作系统使用,需要先执行docker-sync start
# volumes:
# dolife-sync:
# external: true
  1. 执行docker-sync start

mac使用遇到宿主机改文件无法同步到容器中的处理办法

进入容器:

1
docker exec -it 容器名 /bin/bash

在容器中执行:

1
2
cd /var/www
chown -r www-data:www-data html

涉及的文件: github