Centos7使用Docker部署lnmp

原文链接: https://github.com/duiying/Docker-LNMP

Docker-LNMP

利用 Docker-Compose 编排 LNMP 开发环境

清单

注:完整版 (docker-compose up -d)

  • PHP7.2
  • Nginx
  • MySQL5.6
  • Redis
  • phpMyAdmin
  • phpRedisAdmin

注:精简版 (docker-compose -f docker-compose-simplify.yml up -d)

  • PHP7.2
  • Nginx
  • MySQL5.6
  • Redis

    目录结构

    Docker-LNMP
    |----docker                             Docker目录
    |--------config                         配置文件目录
    |------------proxy                      nginx配置文件目录
    |--------files                          DockerFile文件目录
    |------------cgi                        php-fpm DockerFile文件目录
    |----------------Dockerfile             php-fpm DockerFile文件
    |----------------docker-entrypoint.sh   php-fpm 启动脚本
    |------------proxy                      nginx DockerFile文件目录
    |----------------Dockerfile             nginx DockerFile文件
    |----------------docker-entrypoint.sh   nginx 启动脚本
    |--------log                            日志文件目录
    |------------cgi                        php-fpm日志文件目录
    |------------proxy                      nginx日志文件目录
    |----www                                应用根目录
    |--------index.php                      PHP例程
    |----README.md                          说明文件
    |----docker-compose.yml                 docker compose 配置文件(完整版: LNMP+Redis+phpMyAdmin+phpRedisAdmin)
    |----docker-compose-simplify.yml        docker compose 配置文件(精简版: LNMP+Redis)

    准备

    # 安装docker和docker-compose
    yum -y install epel-release 
    yum -y install docker docker-compose
    
    # 启动docker服务
    service docker start
    
    # 配置阿里云docker镜像加速器(建议配置加速器, 可以提升docker拉取镜像的速度)
    mkdir -p /etc/docker
    vim /etc/docker/daemon.json
    # 新增下面内容
    {
        "registry-mirrors": ["https://8auvmfwy.mirror.aliyuncs.com"]
    }
    # 重新加载配置、重启docker
    systemctl daemon-reload 
    systemctl restart docker 

    安装

    # 克隆项目
    git clone https://github.com/duiying/Docker-LNMP.git
    # 进入目录
    cd Docker-LNMP
    # 容器编排
    docker-compose up -d
    # 或使用加速版(推荐, 耗时约10分钟)
    docker-compose -f docker-compose-fast.yml up -d
    # 或使用精简版
    docker-compose -f docker-compose-simplify.yml up -d
    
    # 可自行修改PHP、MySQL等版本,修改image,如修改MySQL版本,MySQL:5.7.27
    # PHP链接:https://hub.docker.com/_/php?tab=tags
    # MySQL链接:https://hub.docker.com/_/mysql?tab=tags
    # Nginx链接:https://hub.docker.com/_/nginx?tab=tags

    测试

    执行成功

    Creating cgi ... done
    Creating proxy ... done
    Creating mysql ...
    Creating phpmyadmin ...
    Creating phpredisadmin ...
    Creating cgi ...
    Creating proxy ...

     

     

    可能遇到的问题

    # Error信息
    The "https://packagist.phpcomposer.com/packages.json" file could not be down
    # 解决方案
    这是由于composer中国镜像失效, 修改Docker-LNMP/docker/files/cgi/Dockerfile
    https://packagist.phpcomposer.com 改为 https://packagist.laravel-china.org

    更新日志

  • cgi 容器支持 crontab

Docker 常用命令

删除所有容器
docker rm -f $(docker ps -aq)
删除所有镜像
docker rmi $(docker images -q)

# 进入PHP容器
# docker exec -it cgi bash

# 进入MySQL容器
# docker exec -it mysql bash

# 进入redis容器
# docker exec -it redis bash

 

如何安装swoole扩展

如何安装swoole扩展

# 进入PHP容器
[root@localhost Docker-LNMP]# docker exec -it cgi bash

# 解决gcc版本过低的问题
yum -y install centos-release-scl
yum -y install devtoolset-7
scl enable devtoolset-7 bash

# 下载、安装

wget https://github.com/swoole/swoole-src/archive/v4.4.3.tar.gz &&\
	tar -zxvf v4.4.3.tar.gz &&\
	cd swoole-src-4.4.3 &&\
	phpize &&\
	./configure &&\
	make && make install &&\
	sed -i '$a \\n[swoole]\nextension=swoole.so' /etc/php.ini &&\
cd ../ && rm -rf v4.4.3.tar.gz swoole-src-4.4.3
# 退出PHP容器
[root@510d01c199f5 /]# exit
exit

# 重启PHP容器
[root@localhost Docker-LNMP]# docker restart cgi

 

如何新建一个站点

比如部署一个Yii2项目 https://github.com/duiying/Yii2-Admin , 并且可以通过 http://frontend.yii2.test 访问

1. 配置Nginx

# Docker-LNMP/docker/config/proxy/conf.d 目录下新建一个配置文件 yii2-docker.conf
[root@localhost Docker-LNMP]# vim docker/config/proxy/conf.d/yii2-docker.conf

yii2-docker.conf 内容如下:

server {

    listen 80;

    server_name frontend.yii2.test;
    root /data/www/Yii2-Admin/frontend/web;
    index index.php index.html index.htm;

    location / {
        # Redirect everything that isn't a real file to index.php
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # deny accessing php files for the /assets directory
    location ~ ^/assets/.*\.php$ {
        deny all;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass cgi:9000;
        try_files $uri =404;
    }

    location ~* /\. {
        deny all;
    }

}

2. 克隆项目

# Docker-LNMP/www 目录下安装 https://github.com/duiying/Yii2-Admin , 安装过程如下:
[root@localhost Docker-LNMP]# cd www
[root@localhost www]# ls
index.php
[root@localhost www]# git clone https://github.com/duiying/Yii2-Admin.git
[root@localhost www]# ls
index.php  Yii2-Admin

# 更改目录权限
[root@localhost www]# chmod -R 777 Yii2-Admin/

3. 修改本地hosts

# vim /etc/hosts 
192.168.246.128 frontend.yii2.test    # 192.168.246.128是虚拟机IP地址

4. 重启Nginx

[root@localhost Docker-LNMP]# docker restart proxy
proxy

5. 浏览器访问

http://frontend.yii2.test

你可能感兴趣的:(Centos7使用Docker部署lnmp)