docker运行声网linux-server-sdk示例

简介: docker运行声网linux-server-sdk示例

人类的天性是容易忘记感激别人,所以,如果我们施一点点恩惠都希望别人感激的话,那一定会使我们大为头痛。——戴尔·卡耐基

首先是下载:

下载 - 云信令(原实时消息) - 文档中心 - 声网Agora

Agora_RTM_SDK_for_Linux_Java_v1_5_1.zip其中有个samples/Agora-RTM-Tutorial-Java,我们将

libs/libagora_rtm_sdk.so

libs/agora_rtm.jar

复制到samples/Agora-RTM-Tutorial-Java/lib

然后在samples/Agora-RTM-Tutorial-Java下执行命令:

mvn install:install-file -Dfile=lib/agora_rtm.jar -DgroupId=io.agora.rtm  -DartifactId=agora-rtm-sdk -Dversion=1.0 -Dpackaging=jar

然后注意修改代码中的AppIdtoken

这里我的token采取服务端生成,因此我们还需要这一个jar

<dependency>
    <groupId>io.agora</groupId>
    <artifactId>authentication</artifactId>
    <version>2.0.0</version>
</dependency>

代码:

String token = new RtmTokenBuilder2().buildToken(appId, appCertificate, userId, 3600);

其次是Dockerfile,我放在Agora-RTM-Tutorial-Java

# 使用基础的Java 8镜像(包含编译工具)作为基础
FROM openjdk:17-jdk
# 设置工作目录
WORKDIR /app
# 复制示例代码和Agora RTM库文件到容器中
COPY . /app
# 暴露所需的端口,如果需要的话
EXPOSE 8080
# 编译示例代码
RUN javac -cp lib/agora_rtm.jar:lib/agora_rtm.jar:lib/authentication-2.0.0.jar:lib/commons-codec-1.11.jar -d . src/main/java/io/agora/RtmJavaDemo.java
# 定义入口命令来运行示例代码
CMD ["java", "-cp", "lib/*:.", "-Djava.library.path=/app/lib", "io.agora.RtmJavaDemo"]

然后是构建镜像、运行

docker build -t agora-rtm-demo:java17 .
docker run -it --rm -p 8080:8080 agora-rtm-demo:java17

然后杯具了,不支持macAARCH64架构芯片

Github-Id-VampireAchao:Agora-RTM-Tutorial-Java achao$ docker build -t agora-rtm-demo:java17 .
[+] Building 1.8s (9/9) FINISHED                                                                                                                                                                                     docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                                                                                 0.0s
 => => transferring dockerfile: 614B                                                                                                                                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                                                                                                                    0.0s
 => => transferring context: 2B                                                                                                                                                                                                      0.0s
 => [internal] load metadata for docker.io/library/openjdk:17-jdk                                                                                                                                                                    1.7s
 => [1/4] FROM docker.io/library/openjdk:17-jdk@sha256:528707081fdb9562eb819128a9f85ae7fe000e2fbaeaf9f87662e7b3f38cb7d8                                                                                                              0.0s
 => [internal] load build context                                                                                                                                                                                                    0.0s
 => => transferring context: 2.95kB                                                                                                                                                                                                  0.0s
 => CACHED [2/4] WORKDIR /app                                                                                                                                                                                                        0.0s
 => CACHED [3/4] COPY . /app                                                                                                                                                                                                         0.0s
 => CACHED [4/4] RUN javac -cp lib/agora_rtm.jar:lib/hutool-all-5.8.20.jar:lib/agora_rtm.jar:lib/authentication-2.0.0.jar:lib/commons-codec-1.11.jar -d . src/main/java/io/agora/RtmJavaDemo.java                                    0.0s
 => exporting to image                                                                                                                                                                                                               0.0s
 => => exporting layers                                                                                                                                                                                                              0.0s
 => => writing image sha256:499b1a69d4889983fe3da9ad61dbce252495c50f29672f806bf6916faa3a2a81                                                                                                                                         0.0s
 => => naming to docker.io/library/agora-rtm-demo:java17                                                                                                                                                                             0.0s
What's Next?
  1. Sign in to your Docker account → docker login
  2. View a summary of image vulnerabilities and recommendations → docker scout quickview
Github-Id-VampireAchao:Agora-RTM-Tutorial-Java achao$ docker run -it --rm -p 8080:8080 agora-rtm-demo:java17
Exception in thread "main" java.lang.UnsatisfiedLinkError: /app/lib/libagora_rtm_sdk.so: /app/lib/libagora_rtm_sdk.so: cannot open shared object file: No such file or directory (Possible cause: can't load AMD 64 .so on a AARCH64 platform)
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
        at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:315)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:287)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2422)
        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
        at java.base/java.lang.System.loadLibrary(System.java:1989)
        at io.agora.common.AgoraServiceJNI.ensureNativeInitialized(AgoraServiceJNI.java:26)
        at io.agora.common.AgoraServiceJNI.<clinit>(AgoraServiceJNI.java:21)
        at io.agora.common.Logging.log(Logging.java:26)
        at io.agora.common.Logging.i(Logging.java:50)
        at io.agora.rtm.internal.RtmClientImpl.initRtmService(RtmClientImpl.java:116)
        at io.agora.rtm.internal.RtmClientImpl.<init>(RtmClientImpl.java:101)
        at io.agora.rtm.internal.RtmManager.createRtmInstance(RtmManager.java:16)
        at io.agora.rtm.RtmClient.createInstance(RtmClient.java:64)
        at io.agora.RtmJavaDemo.init(RtmJavaDemo.java:60)
        at io.agora.RtmJavaDemo.main(RtmJavaDemo.java:239)

解决方案:jetbrains-gateway远端开发

相关文章
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
1037 164
|
SQL 数据库 Docker
【赵渝强老师】在Docker中运行达梦数据库
本文介绍了在Docker容器中部署达梦数据库(DM 8)的具体步骤,包括创建文件夹、下载安装包、导入镜像、启动容器、登录数据库及查看状态等操作。同时,通过视频讲解辅助理解。文中还分析了将数据库服务容器化的潜在问题,如数据安全性、硬件资源争用、网络带宽占用和额外隔离带来的挑战,指出数据库服务在生产环境中可能不适合容器化的原因。
1557 4
【赵渝强老师】在Docker中运行达梦数据库
|
NoSQL Redis 数据库
Docker平台上的Redis镜像运行
这就是如何在Docker平台上运行Redis镜像的全部过程。走进Docker和Redis的世界,探索更多可能!
740 10
|
前端开发 应用服务中间件 nginx
docker安装nginx,前端项目运行
通过上述步骤,你可以轻松地在Docker中部署Nginx并运行前端项目。这种方法不仅简化了部署流程,还确保了环境的一致性,提高了开发和运维的效率。确保按步骤操作,并根据项目的具体需求进行相应的配置调整。
1393 25
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
2756 14
|
机器学习/深度学习 人工智能 Ubuntu
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
582 5
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
377 4
|
安全 Linux Shell
docker运行centos提示Operation not permitted
通过上述步骤,可以有效排查和解决在Docker中运行CentOS容器时遇到的"Operation not permitted"错误。这些措施涵盖了从权限配置、安全策略到容器运行参数的各个方面,确保在不同环境和使用场景下都能顺利运行容器。如果你需要进一步优化和管理你的Docker环境
1497 3
下一篇
开通oss服务