• Windows-Docker-Hyperf项目环境搭建过程记录


    BEGIN

    环境:Docker-Windows-Hyperf

    1. 构建镜像

    在项目根目录下(Backend目录)下查到了一个Dockerfile文件,在Windows打开命令行工具,到该目录下,构建该文件:

    # -t 指定镜像名称为product-system
    # -f 指定运行的Dockerfile文件的名称,如果Dockerfile命名为Dockerfile以外的名称,则必须使用
    # . 指定生成上下文为当前目录
    docker build -t product-system -f .\Dockerfile .
    
    # 查看所有镜像
    docker images
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建一个容器

    # -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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    -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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    由于有的依赖下载有问题,就让同事打包了他的vendor文件夹下得所有文件,我解压到我的vendor文件夹下,运行composer dump-autoload加载了一下就可以了~

    附:Compoer 所有命令行详解

    4. 启动Hyperf

    # 进到项目根目录下
    php ./bin/hyperf.php start
    
    • 1
    • 2

    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
    
    • 1
    • 2

    安装成功,重启系统

    # 使用 DISM 启用 Hyper-V 角色  
    DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
    
    • 1
    • 2

    重新下载镜像,启动容器,启动hyperf,速度比之前用wsl2的时候快很多!

    5. Git切换到工作分支

    这里可参考:Git分支操作、文件操作、基本配置

    # 查看所有分支
    git branch -a 
    
    # 切换分支,其中远程分支为origin/dev,本地分支为dev(适用于第一次创建并切换分支)
    git checkout -b dev origin/dev
    
    # 如果已经有本地分支,可直接运行以下命令
    git checkout dev
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6. 试运行

    浏览器访问在 2. 运行容器中的[本地端口],127.0.0.1:9501,搭建完毕!
    在这里插入图片描述

  • 相关阅读:
    简单了解GaussDB
    lammps数据后处理:python绘制应力应变曲线 附程序代码
    Android-Intent与Bundle在传值上的区别
    腾讯面试总结——iOS开发
    【C++设计模式之原型模式:创建型】分析及示例
    苹果设备连接win11开启的wifi热点的断流问题
    c++编程实例
    Node.js数电票、全电票查验接口示例、发票查验、票据OCR API
    【Axure教程】用中继器制作知识图谱
    c++ 内存释放测试
  • 原文地址:https://blog.csdn.net/qq_35401605/article/details/127802311