docker構建hyperf環境

一,構建hyperf 鏡像

官網git https://github.com/hyperf/hyperf-docker

  1. 使用dockerfile構建鏡像
    根據需要這里我使用8.1 swoole版本的鏡像
    在/home/hyperfdocker 目錄中新建一個Dockerfile文件,將這個git上的Dockerfile內容復制粘貼進去
docker build -t hyperf:php8.1 .

因為我的網絡沒有科學上網,失敗了,換另一種方法

  1. 進入docker鏡像倉庫下載hyperf官方鏡像
    https://hub.docker.com/r/hyperf/hyperf

在這里插入圖片描述

此處我們直接下載鏡像

docker pull hyperf/hyperf:8.1-alpine-v3.11-swoole
docker images

在這里插入圖片描述

二,生成容器

docker run -d --name hyperf -v 宿主機代碼目錄: 容器內代碼目錄 -p 宿主機端口:容器端口(默認9501) -it --privileged -u root hyperf/hyperf:7.4-alpine-v3.11-swool
docker run -d --name hyperf -v /home/hyperfdocker:/www -p 9701:9501 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf:8.1-alpine-v3.16-swoole

查看容器
在這里插入圖片描述

三,安裝hyperf并運行

進入容器

docker exec -it hyperf bash

cd到工作目錄

cd /www

修改composer 國內阿里云源 加速下載 (如提示composer命令不存在,需要安裝composer,或在宿主機執行)

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer

通過composer下載安裝代碼

composer create-project hyperf/hyperf-skeleton

注意這里必須安裝PHP >= 8.1,否則安裝不成功一直報錯
composer完成后cd到hyperf-skeleton目錄下運行項目

php bin/hyperf.php start

在這里插入圖片描述

注意這里有個坑,如果我們composer安裝的時候選擇安裝了mysql,redis等模塊,那就須要配置連接信息,否則會一直報錯,start啟動不起來(mysql不會報錯)
假設我們開啟了mysql模塊,我本機已經啟動了一個mysql容器,我們就去修改配置文件,然后連接mysql數據庫
容器之間的互聯是使用共享網絡指定共同的內網ip進行橋接連通,第一步創建共享網絡。第二步容器運行時指定好網絡就行

  • 查看容器列表
 docker ps -a

在這里插入圖片描述

  • 查看容器網絡
    在這里插入圖片描述
  • 查看docker 鏡像/容器的元數據
docker inspect mysql5

在這里插入圖片描述
前面其實我已經安裝了一個lnmp環境,這里我想就用hyperf容器來聯通lnmp環境中的mysql容器

docker inspect lnmp_default

這里我們采用創建自定義網絡的方式來連通,通過創建自定義網絡,可以為容器提供一個獨立的網絡環境,使得容器可以相互通信,并與其他網絡資源進行交互。自定義網絡提供了更靈活和可擴展的容器互聯方式,相對于過時的 --link 參數更加推薦和強大
創建自定義網絡后,可以將容器連接到該網絡,并使用容器名稱或服務名稱進行容器間通信。這種方式更加標準化,具備更好的擴展性和管理能力。
所以我們只需要將hyperf 容器 加入 mysql5容器網絡lnmp_default即可,這里也有兩種方法,一種是在 run初始化容器的是使用 --network lnmp_default 聲明他的網絡,另外一種就是容器已經run好了,那現在直接加入就行了

docker network connect lnmp_default hyperf

然后再使用 docker inspect lnmp_default 查看,發現已經包含進來了
在這里插入圖片描述
如要要驗證,可以使用兩邊互相ping通來測試
在這里插入圖片描述

  • hyperf配置mysql連接
    修改.env配置文件

注意,
這里面的db_host 是剛剛查看的mysql5 容器的ip
db_port 是容器內部端口不是映射端口

在這里插入圖片描述
在項目目錄\hyperf-skeleton\config目錄下打開routes.php文件,添加路由配置

Router::addGroup('/index/',function (){Router::get('test','App\Controller\IndexController@test');
});

在項目目錄\hyperf-skeleton\app\Controller下找到IndexController.php文件,新增一個action,文件內容修改如下

public function test(){$users = Db::select('SELECT * FROM `user`');  //  返回arrayreturn ['users' => $users,];}

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713218.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713218.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713218.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HBase總結

基本介紹 特點(高可靠、高性能、面向列、可伸縮) 非關系型數據庫大數據實時處理 表規模達數十億行及數百萬列讀、寫訪問可實時分布式存儲系統 HDFS(Hadoop Distributed File System)文件存儲ZooKeeper作為協同服務列存儲 優點:有利于單列數據查詢缺點:整行讀取時效率較慢,…

毫末智行開年融資,揭幕了自動駕駛最后的賽點

毫末智行日前官宣拿到的超億元B1輪融資,在行業引起了不小的關注。 一方面是信心問題,自動駕駛從早期拼技術到去年拼量產落地,創業公司們的聲量此消彼長,有人領先也有人掉隊,但市場的態度都以謹慎為主,甚至…

Android ANR 日志分析定位

ANR 是 Android 應用程序中的 "Application Not Responding" 的縮寫,中文意思是 "應用程序無響應"。這是當應用程序在 Android 系統上運行時,由于某種原因不能及時響應用戶輸入事件或執行一個操作,導致界面無法更新&…

Kubernetes(k8s第二部分)

資源清單相當于劇本 什么是資源: k8s中所有的內容都抽象為資源,資源實例化后,叫做對象。 1.K8S中的資源 集群資源分類 名稱空間級別: kubeadm k8s kube-system kubectl get pod -n default 工作負載型資源,&a…

指針篇章-(1)

指針(1)學習流程 —————————————————————————————————————————————————————————————————————————————————————————————————————————————…

Linux:使用nslookup和dig查詢DNS記錄信息

nslookup nslookup(Name Server Lookup)用于從 DNS 服務器查詢域名、IP 或其他 DNS 記錄信息 示例 查詢域名信息 $ nslookup baidu.comServer: 114.114.114.114 Address: 114.114.114.114#53Non-authoritative answer: Name: baidu.com Add…

springcloud項目,無法在Sentinel Dashboard查看到服務的訪問監控信息【解決方法】

1.問題場景 因為warehouse子項目的前端未開發,所以只能通過postman測試接口訪問; 2.解決方法 package org.sharetek.common.security.config;import cn.dev33.satoken.SaManager; import cn.dev33.satoken.filter.SaServletFilter; import cn.dev33.sat…

【Django】執行查詢—檢索對象(二)

主鍵 (pk) 查詢快捷方式 pk查詢等同于通過模型的 primary key 進行過濾,直接上例子,下面三個語句是等效的。 >>> Blog.objects.get(id__exact14) # Explicit form >>> Blog.objects.get(id14) # __exact is implied >>> …

構筑未來商業智能——數據中臺的戰略視角_光點科技

隨著數字化時代的加速到來,企業對于數據的依賴程度日益增強。數據中臺,作為連接數據與商業決策的關鍵樞紐,已成為企業打造持久競爭優勢的戰略選擇。本文將從戰略的高度,解析數據中臺如何幫助企業捕捉數據紅利,推進業務…

NXP實戰筆記(十一):32K3xx基于RTD-SDK在S32DS上配置LPSPI(同步、異步、DMA、主機、從機、中斷、輪詢)

目錄 1、概述 2、RTD-SDK配置 2.1、配置目標 2.2、主、從機引腳配置 2.3、時鐘配置 2.4、LPSPI配置 2.5、中斷配置 2.6、DMA配置(使用DMA才會配置) 2、dma Logic Instance 2.7、RM配置(使用DMA的情況下必須配置此選項) 3、代碼實現 1、概述 S32K3_低功耗LPSPI輪詢…

第七十六周周報

學習目標: 論文 實驗 學習時間: 2024.2.24-2024.3.1 學習產出: 論文 仔細看了論文"All are Worth Words: A ViT Backbone for Diffusion Models",”DiffiT: Diffusion Vision Transformers for Image Generation…

備戰藍橋杯Day19 - 堆排序基礎知識

一、每日一題 - 填充 詳細題解 s input() # 輸入字符串 n len(s) # 定義字符的長度 judge ["00", "11", "0?", "1?", "?0", "?1", "??"] # 把所有的情況一一列舉出來 count 0 # 設置計數…

性能優化篇(四) GPU Instancing

使用GPU Instancing可以在一個Draw Call中同時渲染多個相同或類似的物體,從而減少CPU和GPU的開銷。 官方文檔:https://docs.unity3d.com/Manual/GPUInstancing.html 啟用GPU Instancing,我們可以選中一個材質,然后在Inspector窗口…

PostgreSQL教程(二十一):服務器管理(三)之服務器設置和操作

本章討論如何設置和運行數據庫服務器,以及它與操作系統的交互。 一、PostgreSQL用戶賬戶 和對外部世界可訪問的任何服務器守護進程一樣,我們也建議在一個獨立的用戶賬戶下運行PostgreSQL。這個用戶賬戶應該只擁有被該服務器管理的數據,并且…

埃隆·馬斯克對OpenAI提起訴訟

埃隆馬斯克對OpenAI提起訴訟,理由是AI安全威脅 馬斯克指責,自從公司將其開發的人工通用智能技術(AGI)以閉源形式交給微軟后,OpenAI已經失去了其“開放”的本質。 埃隆馬斯克在周四提交的一項訴訟中聲稱,薩姆…

Ubuntu22.04下安裝Spark2.4.0(Local模式)

一、版本信息 虛擬機產品:VMware Workstation 17 Pro 虛擬機版本:17.0.0 build-20800274 ISO映像文件:ubuntukylin-22.04-pro-amd64.iso Hadoop版本:Hadoop 3.1.3 JDK版本:Java JDK 1.8 Spark版本:S…

[SUCTF 2019]EasyWeb --不會編程的崽

個人認為&#xff0c;這題還算有些東西。先來看源碼 <?php function get_the_flag(){// webadmin will remove your upload file every 20 min!!!! $userdir "upload/tmp_".md5($_SERVER[REMOTE_ADDR]);if(!file_exists($userdir)){mkdir($userdir);}if(!empty…

Slurm作業系統

1、什么是計算機集群 計算機集群是由多臺獨立的計算機&#xff08;節點&#xff09;通過網絡連接在一起&#xff0c;以共同完成任務的一種計算機系統結構。集群系統旨在提高性能、可用性和可擴展性。以下是計算機集群的一般結構和組成要素&#xff1a; 節點&#xff08;Nodes&…

android Service 與 activity 通信 并不斷傳數據

注&#xff1a;這只是個Demo 以下載為案例&#xff0c;實現開啟下載&#xff0c;暫停下載&#xff0c;下載進度不斷發送給activity class DownloadService : Service() {override fun onBind(intent: Intent?): IBinder? {return MyBinder()}inner class MyBinder : Binder…

分布式任務調度平臺XXL-JOB安裝及使用

簡介 XXL-JOB是一個分布式任務調度平臺&#xff0c;其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼并接入多家公司線上產品線&#xff0c;開箱即用。 源碼github地址 源碼gitee地址 中文文檔地址 中央倉庫地址 <!-- http://repo1.maven.org/ma…