BEGIN
环境:Docker-Windows-Hyperf
1. 构建镜像
在项目根目录下(Backend
目录)下查到了一个Dockerfile
文件,在Windows打开命令行工具,到该目录下,构建该文件:
# -t 指定镜像名称为product-system
# -f 指定运行的Dockerfile文件的名称,如果Dockerfile命名为Dockerfile以外的名称,则必须使用
# . 指定生成上下文为当前目录
docker build -t product-system -f .\Dockerfile .
# 查看所有镜像
docker images
2. 运行容器
需要在DockerDesktop里面添加项目路径,不然会报错:Error response from daemon: user declined directory sharing
,
设置步骤:Settings->Resources->File sharing
添加项目路径;
因为一开始build
时候的镜像名太长了,需要改成product
# 将镜像id为:acec098bb489 添加一个新的镜像,镜像名为product
docker tag acec098bb489 product
# 删除镜像
docker rmi product-system
创建一个容器
# -it 与容器进行交互式启动
# -d 容器以后台的方式进行运行,关闭终端后也不停止
# --name 指定容器的名称
# -v /d/product-system:/www 将本地目录'/d/product-system'挂载到容器中的'/www'目录下
# -p 9501:9501 将nginx的9501端口映射到Docker中的9501(需要和config/autoload/server.php中servers的端口一致)端口
# product:latest 指定镜像为product的latest版本
docker run -itd --name product -v /d/product-system:/www -p 9501:9501 product:latest
# 查看所有容器 -----包含正在运行 和已停止的
docker ps -a
#删除一个容器
docker rm -f 容器名/容器ID
# 清理服务器所有容器的日志
for container in `docker ps --no-trunc -q`; do echo "" > /var/lib/docker/containers/${container}/${container}-json.log; done
-p设置容器内端口的时候,
前面那个9501是本地暴露的端口
后面的端口是容器内部正在监听的端口
后面的端口需要和config/autoload/server.php中servers的端口一致
3. Composer 更新插件
# 从composer.lock中拉取指定版本的依赖
composer install
# 更新composer.json中拉取最新版本的依赖,-vvv:输出更多详细信息
composer update -vvv
# composer自检
compoer diagnose
# 切换成华为云镜像
composer config -g repo.packagist composer https://mirrors.huaweicloud.com/repository/php
# 查看composer配置
composer config -l -g
由于有的依赖下载有问题,就让同事打包了他的vendor
文件夹下得所有文件,我解压到我的vendor文件夹下,运行composer dump-autoload
加载了一下就可以了~
4. 启动Hyperf
# 进到项目根目录下
php ./bin/hyperf.php start
5. 切换成 Hyperf-V 模式
这个时候发现很卡,根据 Windows 10 Docker 基于 WSL 2 时读写性能的坑 说的由于 Windows 和 Linux 的跨系统文件兼容性问题无法得到很好的解决,WSL 2 下访问 Windows 文件性能会非常差,于是我关闭了Use the WSL 2 based engine,注意,关掉之后之前有的镜像和容器都会消失
重启了Docker Desktop,提示要安装Hyperf-V
,按照在 Windows 10 上安装 Hyper-V的步骤,在PowerShell里运行以下两条命令
# 安装Hyper-V
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
安装成功,重启系统
# 使用 DISM 启用 Hyper-V 角色
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
重新下载镜像,启动容器,启动hyperf,速度比之前用wsl2的时候快很多!
5. Git切换到工作分支
这里可参考:Git分支操作、文件操作、基本配置
# 查看所有分支
git branch -a
# 切换分支,其中远程分支为origin/dev,本地分支为dev(适用于第一次创建并切换分支)
git checkout -b dev origin/dev
# 如果已经有本地分支,可直接运行以下命令
git checkout dev
6. 试运行
浏览器访问在 2. 运行容器
中的[本地端口],127.0.0.1:9501,搭建完毕!