2.4. ModStart的Docker一键启动环境

未匹配的标注

ModStart的Docker一键启动环境

系统简介

本仓库提供了 ModStart下Docker一键启动脚本。

在使用前必须先了解Docker的基础知识,具体可参考:

使用 docker-composer

1. 下载本仓库到本地

Linux参考命令

# 国外
git clone https://github.com/modstart/ModStartDocker.git
# 国内
git clone https://gitee.com/modstart/ModStartDocker.git

Windows参考

按照描述自行操作

2. 下载ModStart代码

下载ModStart相关程序到环境目录,命名为 modstart

ModStartCMS代码

cd ModStartDocker
# 国外
git clone https://github.com/modstart/ModStartCMS.git
# 国内
git clone https://gitee.com/modstart/ModStartCMS.git

ModStartBlog代码

cd ModStartDocker
# 国外
git clone https://github.com/modstart/ModStartBlog.git
# 国内
git clone https://gitee.com/modstart/ModStartBlog.git

Windows参考

按照描述自行操作

准备好的文件目录结构如下所示为:

├── README.md                                # 帮助文档
├── docker-compose.yml      # 
├── docker_config           # 程序配置
│   ├── mysql_init.sql      # 数据库初始化脚本
│   └── tengine.conf        # tengine配置
└── modstart                # ModStart相关程序
    ├── app
    ├── bootstrap
    ├── ...
    └── public

3. 使用Docker脚本一键启动

docker-compose up

4. 进入系统安装引导程序

访问地址:localhost:20080/,数据库地址请按如下信息填写:

  • 主机:ms_mysql
  • 数据库名:modstart
  • 用户名:root
  • 密码:123456

使用脚本自定义部署

环境变量

# 服务器内网IP
DOCKER_MASTER=x.x.x.x

安装 docker

CentOS 7.X
# 安装必要的命令
yum install -y sudo
sudo yum update -y
sudo yum install vim curl telnet git htop -y
sudo yum install docker -y
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

其他系统

请参照docker官网自行安装

初始化文件

# ① 创建必要的目录
sudo mkdir -p /data/nginx/conf.d/ /data/website
# ② 复制源代码
执行复制系统代码文件到 /data/website/xxx.com
# ③ 修正代码权限为php的执行用户
sudo chown -R 33.33 /data/website

创建配置文件

Nginx配置文件

路径 /data/nginx/conf.d/xxx.com.conf

server {
    listen       80;
    server_name  xxx.com;
    charset utf-8;
    index index.php index.html;
    root /data/website/xxx.com/public;
    autoindex off;

    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers *;

    location ^~ /.git {
        deny all;
    }

    location / {
        if ($request_method = 'OPTIONS') {
            return 200;
        }
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass   docker-master:9000;
        fastcgi_index  index.php;
        fastcgi_param  PHP_VALUE  "open_basedir=/data/website/xxx.com/:/tmp/:/var/tmp/";
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ \.(gif|jpg|jpeg|png|bmp|ico|css|js)$ {
       expires max;
    }

    location ~* \.(eot|ttf|woff|woff2)$ {
        add_header Access-Control-Allow-Origin '*';
    }
}

部署mysql

# 生成随机密码
MYSQL_PASSWORD=$(</dev/urandom tr -dc 'A-Za-z0-9' | head -c 12  ; echo)
# 输出随机密码
echo $MYSQL_PASSWORD
# 初始化MySQL
sudo docker run --name mysql \
        -e MYSQL_ROOT_PASSWORD="$MYSQL_PASSWORD"\
        -p 3306:3306 \
        -v /data/mysql/data:/var/lib/mysql:rw \
        -d mysql:5.6.29
# 等待MySQL启动完成
# 出现 Version: '5.6.29'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306
sudo docker logs -f --tail 1000 mysql
# 初始化完成后清理MySQL
sudo docker stop mysql ; sudo docker rm mysql
# 重新创建正常运行的服务
sudo docker run --name mysql \
        --restart=always -p 3306:3306 \
        -v /data/mysql/data:/var/lib/mysql:rw \
        --add-host docker-master:$DOCKER_MASTER \
        -d mysql:5.6.29
# 进入mysql容器
sudo docker exec -it mysql bash
# 登录mysql,输入密码 (上面随机生成的密码)
mysql -u root -p
# 创建数据库xxx
create database xxx;
# 退出mysql
exit
# 退出容器
exit

部署php

sudo docker run \
        --name php56 --restart=always -p 9000:9000 \
        --add-host docker-master:$DOCKER_MASTER \
        -v /data/website:/data/website:rw \
        -d registry.cn-hangzhou.aliyuncs.com/epdocker/php56:latest

部署nginx

sudo docker run --name tengine -p 80:80 -p 443:443 --restart=always \
        --add-host docker-master:$DOCKER_MASTER \
        -v /data/website:/data/website:rw \
        -v /data/nginx/conf.d:/etc/nginx/conf.d:ro \
        -d registry.cn-hangzhou.aliyuncs.com/epdocker/tengine:latest

进入引导程序

访问 xxx.com/install.php 进入引导程序

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~