by Devin Yang

建立于: 2年前 ( 更新: 2年前 )

虽然phpenv主要用於运行PHP Laravel的环境,但不代表他不能跑其他语言或其他容器。
本文介绍,我如何让phpenv跑python的fastapi环境,当然这只是一个概念,
目前为止,我已经让PHP api跑HAProxy了,并且自动申请及更新免费证书,现在就让他来跑Python的fastapi吧。
phpenv没有什么限制,限制的是您的想像力😆


一、首先我先在envs的目录touch一个环境档。

devin@ai:~/phpenv/envs$ touch fastapi_cv2

二、新建fastapi_cv2内容如下:

DEFAULT=fastapi
PROJECT=cv2
WORKSPACE=fastapi
FOLDER=/home/devin/sd/rembg
FASTAPI_PORT=8001

这里定义了,默认我使用fastapi.yml档,我把Project名称取名为cv2。
fastapi.yml档已内建在目前最新版本的phpenv中罗,他的服务名称是fastapi。
透过WORKSPACE的指定,我们之后可以透过简易的bash,./console直接进入fastapi的容器中。

三、完成第二步的环境档创建后,我们可以运行./link进行环境挡的选定,来来直接贴给画面可能大家看,应该较有感我是怎么操作的。


四、标准流程,当我们设置好环境档,并运行./link选取后,就是要运行./console build啦,这个用来创建此Project专用的image。
如果需要请依自己的项目需求调整您的Python版本。(dockerfiles/Dockerfile-fastapi)
您也可以拷贝一个新的fastapi.yml档,一切都操之在你,php仅提供了一个基本的运作方式提供参考,当然DEFATUL=fastapi要指向您新建的yml档。

./console build

结果如下:

五、成功build完后,就来启动看看,透过./start启动,再透过./console ps查看。

./start
./console ps

实际画面如下:

 

六、还记得第二步中,我早已指定了Project的folder了吗? FOLDER=/home/devin/sd/rembg,让我们用./console直接进入容器。
这便是phpenv方便的地方罗,发觉了吗? :)
 

./console

实际画面:

您应该发觉到了,自动帮您运行source /opt/python/bin/activat了,并且切换到了/app目录。
七、标准包安装流程,让我们用pip安装包吧。
我们可以选择新安装或是由已创建的requirments.txt安装。

pip install -r requirments.txt

安装好就像这样罗,实际操作画面:

八、我们可透过ctrl+d离开容器,找出此执 行的容器,因为我的project叫cv2因此可以像下方这样

九、由於在第七步中,我们完成了requirments的安装,我们需要把Docker的容器commit起来到image中,这样下次重启后才不用重装。
简单copy画面中的hash及名称,就能commit罗。

结果如下:

十、直接来一次重启,来测看看这个Project会不会跑吧:)

./restart

操作结果如下:

因为只有一个容器,所以我们可以不指定服务名称,查看运行画面结果是否有误

./console logs -f

结果如下,嗯,看起来非常正常so far so good:)
成功用phpenv运行Python的fastapi啦。


这个图案中他Listen的port 8000是容器内的连接埠,还记得吗,我在.env的环境设置是8001,所以我们可以透过主机端的8001进行访问的

来测测API吧,图档去背

添加HAProxy的设置,我们可以让不同的语言共用同一个域名哦,不过这就另话了。
例如,我的部落格是跑Laravel的PHP环境,但API是运行Python的fastapi。
 

测试网址如下:

https://www.ccc.tc/api/rembg/docs

 

Tags: fastapi phpenv docker

Devin Yang

文章内容无法一一说明,如果您有什么不了解处,欢印提问哦:)

No Comment

Post your comment

需要登入才可留言!

类似文章


docker

如何简单的用Docker创建internet命令行的测速进程呢?

如何简单的用Docker创建internet命令行的测速进程呢? 这里我们使用python的进程speedtest-cli 会用Docker主要的用例,例如我想要在我的NAS内进行测速, 虽然我的NAS内有python,但没有pip命令,这时用Docker感觉上安全很多, 当然前题您的NAS需能跑Docker:)。 或者,我在MacOS的环境,我不想安装speedtest-cli到我的MacOS中。 这时用Docker简单的自建简单的运行环境还满不错的。

docker

Docker防毒攻略

最近刚看玩延禧攻略,就想来介绍个MacOS扫毒攻略。 这篇文章,教大家用如何用Docker搞定MacOS扫毒。 简单介绍,我们如何透过docker使用防毒软体扫毒。 这里假定目前我的目录是在我的家目录中,所以${PWD}就是目前的所在目录,会被挂载到container内的scan数据夹。 所以,使用clamscan -r /scan/,时就能扫描所有的挡案罗,加上-r的参数会使用递归的方式一层一层的进入子目录扫描。

docker laravel

闲聊D-Laravel的console命令

D-Laravel的console命令让我们快速的了解他运行了什么。如果使用docker-compose是怎么运行的呢? 我们来看看吧。