使用docker搭建swoft 2.x环境

最近项目要使用到框架swoft,但是官方文档以及网上的各路教程均无法直接搭建成功,顾折腾了1天后,记录一下搭建过程:
1.首先VM上新建一个centos7.x的系统,参考:https://www.cnblogs.com/toutou/p/vmware_workstation_centos7.html
2.配置xshell连接虚拟机,参考:https://www.cnblogs.com/shireenlee4testing/p/9469650.html
3.安装docket

yum install docker -y
#安装成功后,启动docker
cd /bin
systemctl start docker
#检查状态
docker ps -a
#出现列表即启动成功

4.安装docker-compose
参考:https://blog.csdn.net/pushiqiang/article/details/78682323

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
#测试
docker-compose --version
#出现以下结果代表成功

docker-compose version 1.16.1, build 1719ceb

5.安装git(可跳过)
yum -y install git
6.关闭snlinux防火墙,参考:https://blog.51cto.com/bguncle/957315
7.拉取swoft项目:参考:https://www.cnblogs.com/a609251438/p/12098988.html

cd /home
#创建www目录
mkdir www
cd /www
git clone https://github.com/swoft-cloud/swoft
#如果上面连接无法拉取,使用下面这条
git clone git://github.com/swoft-cloud/swoft

8.修改docker-compose.yml配置文件

#进入项目目录
cd swoft
#先备份一个文件
cp docker-compose.yml docker-compose-back.yml
#编辑文件
vi docker-compose.yml
#在swoft代码块中添加下面三行
command: /bin/bash
tty: true
stdin_open: true
#并且注释restart: always

9.启动容器并进入:

docker-compose up -d

#查看容器id
docker ps -a

#获取到swoft对应的id或者名字,然后进入到容器内
docker exec -it 243c32535da7 /bin/bash
#或者 
docker exec -it swoft-srv /bin/bash

10.进入后到即为项目的根目录,查看.env文件,如果没有就拷贝一份
cp .env.example .env

11.执行composer安装

#先配置阿里云镜像源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

composer install
#安装依赖成功后,测试是否安装成功
php bin/swoft -v
#出现版本信息即为成功


12.启动项目,参考:https://www.thinkphp.cn/extend/1372.html
php bin/swoft ws:start

Laravel使用migrate更新指定数据表

在项目开发中,数据表往往是分开多次建立的,因此后期使用artisan命令
php artisan migrate
往往会报错
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'xxx' already exists
所以我们可以在database下新建目录new,然后把新建并且数据库中还没有对应表的Migration拷贝到该目录下,然后执行下面命令
php artisan migrate --path=database/new
如果执行还是不成功,可以执行
php artisan migrate:refresh --path=database/new