ubuntu上docker部署sanic使用C++动态库.so

本文介绍了在Docker环境下部署使用Sanic框架的Python服务时,遇到C++动态库加载失败的问题。通过查看日志发现错误为'Nosuchfileordirectory'(neededby/sanic/xxx.so)。问题出在动态库路径不正确。Dockerfile中已设置将本地文件复制到Docker容器内,并配置了暴露8000端口和运行server.py。解决方法是确保xxx.so文件与server.py在同一目录下并正确引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Docker中部署SANIC
使用c++的动态库出现运行容器马上停止
查看报错日志:

docker logs 容器ID

显示: No such file or directory (needed by /sanic/xxx.so)

目录结构
├── Dockerfile
├── xxx.so
└── server.py

server.py 内容:

from sanic import Sanic
from sanic.response import json
import ctypes

ll = ctypes.cdll.LoadLibrary
lib = ll('./xxx.so')
lib.Loginfo()

app = Sanic(__name__)


@app.route("/")
async def index(request):
    return json({'Hello World!':'nihao!'})


@app.route("/cgi-bin/clicklog", methods=['POST'])
async def click(request):
    str_data = str(request.json)
    lib.DataStr(str_data.encode('ascii'))
    return json({})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000, fast=True, access_log=False, debug=False)


Dockerfile 文件内容:

#FROM python:3.8	#获取python环境python900M左右
FROM python:3.8.13-slim	#python较小130M左右

WORKDIR /sanic	#在docker中创建sanic文件夹

COPY . /sanic	# . 表示Ubuntu当前文件夹下所有文件	/sanic表示docker下文件夹,将本地所有文件拷贝到docker的/sanic文件夹下

#RUN pip3 install git+https://github.com/channelcat/sanic	#下载sanic的环境,多尝试几次
RUN python3.8 -m pip install sanic		#下载sanic环境

EXPOSE 8000	#打开容器的8000端口

CMD ["python", "server.py"]	#运行命令

前提Docker已经安装成功:

docker build -t my-sanic-image .	#创建镜像,追后有个 . 别忽略了
docker run --name mysanic -p 8000:8000 -d my-sanic-image	#创建并且执行容器

注意:安装sanic时候可能会失败,多尝试几次,需要将出错镜像删除
查看现有的镜像文件

docker images 

在这里插入图片描述
查看docker容器是否运行:
如果正在运行需要将容器停止并且删除

docker ps 		#查看容器是否运行
docker stop 容器ID	#停止容器
docker ps -a	#查看所有容器

删除docker容器:

docker rm 容器ID

删除未安装成功的镜像:
(36表示IMAGE ID 可以只使用几位就行)

docker image rm 36
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值