Docker项目环境搭建过程记录、Docker切换Hyperf-V

8 篇文章 0 订阅
5 篇文章 0 订阅

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加载了一下就可以了~

附:Compoer 所有命令行详解

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,搭建完毕!
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是一个安装 Hyperf 框架的 `yaml` 文件示例: ```yaml stages: - install - start install: stage: install image: docker:latest services: - docker:dind script: - docker run -d --name hyperf -v /mnt/hgfs/www/hyperf/:/hyperf-skeleton -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf:7.4-alpine-v3.11-swoole - docker exec -it hyperf sh -c "cd /hyperf-skeleton && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer && composer create-project hyperf/hyperf-skeleton" artifacts: paths: - /mnt/hgfs/www/hyperf/hyperf-skeleton start: stage: start image: docker:latest services: - docker:dind script: - docker start hyperf - docker exec -it hyperf sh -c "cd /hyperf-skeleton && php /hyperf-skeleton/bin/hyperf.php start" ``` 这个 YAML 文件定义了两个阶段,第一个阶段为 `install`,用于在 Docker 容器中安装 Hyperf 框架及其相关依赖;第二个阶段为 `start`,用于在 Docker 容器中启动 Hyperf 框架。在 `install` 阶段中,我们使用了 `docker` 镜像,在 Docker 容器中执行了 `docker run` 命令来创建 Hyperf 容器,并执行了 `docker exec` 命令来执行安装 Hyperf 框架及其相关依赖的命令。在 `start` 阶段中,我们同样使用了 `docker` 镜像,在 Docker 容器中执行了 `docker start` 命令来启动 Hyperf 容器,并执行了 `docker exec` 命令来启动 Hyperf 框架。在 `install` 阶段中,我们还使用了 `artifacts` 关键字来指定将 Hyperf 框架所在的目录 `/mnt/hgfs/www/hyperf/hyperf-skeleton` 作为构建产物,以便在后续的阶段中使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值