# yiiframe-dockerfiles **Repository Path**: hjp1011/yiiframe-dockerfiles ## Basic Information - **Project Name**: yiiframe-dockerfiles - **Description**: 用docker容器服务的方式搭建yiiframe环境,易于维护、升级。使用前需了解Docker的基本概念,常用基本命令。 可以一条条命令执行docker命令来构建镜像,容器。这里推荐使用docker-compose来管理,执行项目,下面是使用流程。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-13 - **Last Updated**: 2021-12-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 简介 用docker容器服务的方式搭建yiiframe环境,易于维护、升级。使用前需了解Docker的基本概念,常用基本命令。 可以一条条命令执行docker命令来构建镜像,容器。这里推荐使用docker-compose来管理,执行项目,下面是使用流程。 ## 安装 docker > 以下以 CentOS 为例 > 更多详见官方文档:[https://docs.docker.com/engine/install/centos/](https://docs.docker.com/engine/install/centos/) 1、卸载老的 docker 版本(没有可忽略) ``` sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine ``` 2、 安装所需要的包 ``` sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 ``` 3、安装 docker ``` sudo yum install docker-ce docker-ce-cli containerd.io ``` >安装完成后可运行 docker --version 命令查看版本号 4、启动 docker ``` sudo systemctl start docker ``` > 也可以使用国内daocloud一键安装命令 ``` curl -sSL https://get.daocloud.io/docker | sh ``` ## 安装 docker-compose > 以下以 Linux 为例 > 更多详见官方文档:[https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/) 1、安装 ``` sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` 2、赋予权限 ``` sudo chmod +x /usr/local/bin/docker-compose ``` >安装完成后可运行 docker-compose --version 命令查看版本号 ## 镜像加速 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如: * [Azure 中国镜像 https://dockerhub.azk8s.cn](https://github.com/Azure/container-service-for-azure-china/blob/master/aks/README.md#22-container-registry-proxy) * [阿里云加速器(需登录账号获取)](https://cr.console.aliyun.com/cn-hangzhou/mirrors) * [七牛云加速器 https://reg-mirror.qiniu.com](https://kirk-enterprise.github.io/hub-docs/#/user-guide/mirror) > 由于镜像服务可能出现宕机,建议同时配置多个镜像。 > 国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档。 本节我们以 Azure 中国镜像** **[https://dockerhub.azk8s.cn](https://dockerhub.azk8s.cn/) 为例进行介绍。 **Ubuntu 16.04+、Debian 8+、CentOS 7** 对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件) ``` { "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com" ] } ``` > 注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。 之后重新启动服务。 ``` sudo systemctl daemon-reload sudo systemctl restart docker ``` ## 使用dockerfiles #### 文件目录 目录 | 说明 ---|--- --- app | 应用安装目录 --- data | mongo、mysql数据库文件存储 --- docs | 帮助文档 --- logs | nginx、mongo、mysql、php日志 --- sercices | 服务软件配置包 --- --- mongo | memcached配置及安装文件 --- --- mysql | mysql配置及安装文件 --- --- nginx | nginx配置及安装文件 --- --- php | php配置及安装文件 --- --- redis | redis配置及安装文件 --- --- docker-composer.yml | docker配置执行文件 #### 相关软件版本 - PHP 7.2 - MySQL 5.7 (root账号:root;yiiframe,成员账号:yiiframe;密码:yiiframe,可编辑services\docker-compose.yml文件,在46行修改初始密码) - Nginx 1.12 - Redis 4.0 #### 用到的PHP扩展 - redis 4.0.0 - swoole latest #### 1.下载yiiframe-dockerfiles git clone下载: ``` git clone https://gitee.com/hjp1011/yiiframe-dockerfiles.git # 如果需要完整版再执行 git checkout full chmod -R 777 ./yiiframe-dockerfiles/logs cd yiiframe-dockerfiles/services ``` #### 2.下载需要的拓展包 先下载好要使用的拓展包,如果编译出错要多次构建容器就可以省掉下载时间。 ``` wget https://pecl.php.net/get/redis-4.0.0.tgz -O php/pkg/redis.tgz ``` #### 3.修改默认数据库账号密码(可选) ``` 编辑 services\docker-compose.yml文件在46行左右修改初始密码 MYSQL_ROOT_PASSWORD: yiiframe # root密码 自行修改 MYSQL_DATABASE: yiiframe # 数据库名 MYSQL_USER: yiiframe #数据库用户 MYSQL_PASSWORD: yiiframe #数据库密码 ``` #### 4.docker-compose构建项目 进行docker-compose.yml所在文件夹: 执行命令: ``` docker-compose up ``` 如果没问题,下次启动时可以以守护模式启用,所有容器将后台运行: ``` docker-compose up -d ``` 使用 docker-compose 基本上就这么简单,Docker 就跑起来了,用 stop,start ,restart关闭、开启或重启容器服务。 更多的是在于编写 dockerfile 和 docker-compose.yml 文件。 可以这样关闭容器并删除服务: ``` docker-compose down ``` ## Demo站点搭建 ##### 1、下载yiiframe框架 >注意:以下关于用到php的最好都进入php容器内去执行,避免php版本对不上 - 查看容器services_php-fpm的id: `docker ps` - 进入容器:`docker exec -it 容器id /bin/bash` 默认会进入容器的/data目录 - 进入www目录并克隆项目 ``` cd /data/www git clone https://gitee.com/hjp1011/yiiframe.git cd yiiframe ``` ##### 2、安装依赖包 ``` composer install ``` ##### 3、初始化项目 ``` php init //然后输入0回车,再输入yes回车,注意如果想修改应用入口请先看入口修改文档 ``` ##### 4、配置数据库信息 查所有容器IP ``` docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) ``` 修改配置文件common/config/main-local.php,主要修改ip地址,如前面没有修改数据库账号和密码,其他参数使用默认即可 ``` 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=172.19.0.2;port=3306;dbname=yiiframe', 'username' => 'yiiframe', 'password' => 'yiiframe', 'charset' => 'utf8', 'tablePrefix' => 'yii_', ], ``` #### 5、安装数据库 ``` php ./yii migrate/up ``` #### 6、域名解析 找到 `services/nginx/conf.d` 下的 demo.website.cnf 里修改第三行server_name ``` server_name [为你自己的域名]; ``` 注意重启一下nginx容器才能生效 ```docker restart 容器id``` >如果已注册过域名,域名解析要指向服务器的IP,如果没有域名,可随便填写个域名,再修改本地host文件。 #### 7、访问站点 http://域名 即可访问 ## 多站点共存 >如果想在容器里安装多个站点,只需按如下步骤操作 #### 1、创建数据库和账号 (1)进入mysql 容器 ``` mysql -u root -p ``` 输入密码,进入到mysql命令行 (2)创建一个用户(问题:这个需要同时创建本地和外网) 允许本地IP访问: ``` create user 'yiiframe2'@'localhost' identified by 'yiiframe2'; ``` 允许外网IP访问 ``` create user 'yiiframe2'@'%' identified by 'yiiframe2'; ``` 刷新权限: ``` flush privileges; ``` (3)创建数据库:yiiframe_2 ``` create database yiiframe_2 default charset utf8 collate utf8_general_ci; ``` (4)用户分配权限 授予用户通过外网IP对于该数据库的全部权限 ``` grant all privileges `on yiiframe_2`.* to 'yiiframe2'@'%' identified by 'yiiframe2'; ``` 授予用户在本地服务器对该数据库的全部权限 ``` grant all privileges on `yiiframe_2`.* to 'yiiframe2'@'localhost' identified by 'yiiframe2'; ``` 刷新权限 ``` flush privileges; ``` 退出root用户登陆新建的用户 exit 使用新账号登陆: mysql -u yiiframe2 -p 输入密码之后进入mysql命令行; #### 2、进入php容器,在www目录下载新的站点文件(见DOMO站点搭建节) #### 3、创建配置文件 复制services/nginx/conf.d/demo.website.conf 到新的文件,并修改绑定的域名和站点文件夹即可,修改完后重启nginx容器 ## 反馈 在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流 QQ群:1107210028 ## 引用 [zPhal-dockerfiles](https://github.com/ZpGuo/zPhal-dockerfiles) [lnmp-dockerfiles](https://github.com/jianyan74/lnmp-dockerfiles) ## 文档 [Docker 配置详解](https://www.jianshu.com/p/2217cfed29d7) [Docker 入门教程](http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html) [Docker 微服务教程](http://www.ruanyifeng.com/blog/2018/02/docker-wordpress-tutorial.html)