docker classmethod/openjdk-alpine-git 集成ffmpeg
问题描述
项目功能增加,需要将amr音频文件转换成wav格式音频文件,转换工具采用ffmpeg,但是在项目部署的时候,遇到了问题。
项目在开发环境功能调试完成之后,需要部署到docker容器里面,但是由于docker容器的隔离性,单纯下载一个ffmpeg容器,web项目无法调用ffmpeg命令。转换思路,将ffmpeg安装到web项目的docker容器里面。
1. 编写dockerfile文件
# 基于classmethod/openjdk-alpine-git
FROM classmethod/openjdk-alpine-git
#更新源,安装yasm ffmpeg
RUN apk update
RUN apk add yasm && apk add ffmpeg
# 设置工作目录,进入到容器中的初始目录,不存在会自动创建
ENV MYPATH /var/lib/docker/jar
WORKDIR $MYPATH
# 复制jar到工作目录并改名为app.jar
# 相对于Dockerfile文件的路径
# ADD 命令必须提供两个参数,第一个参数为:宿主机中的目录,相对于Dockerfile文件
# 第二个参数为容器中的目录,相对于WORKDIR
ADD weixin.jar weixin.jar
# 添加容器卷,方便以后的处理,关联宿主机中的目录,不存在会自动创建
VOLUME $MYPATH
# 暴露端口
EXPOSE 8080
# 运行jar包
CMD java -jar weixin.jar
web项目打包成jar,容器使用classmethod/openjdk-alpine-git镜像部署,部署前安装ffmpeg。
dockerfile文件的文件名称为Dockerfile,没有后缀。
2. linux服务器操作
- 在linux服务器上新建一个文件夹
- 将dockerfile文件和web项目打包成的jar拷贝到第一步创建的文件夹中。
3. 编译dockerfile文件
docker build -t weixindocker:1.0 .
weixindocker:1.0 为镜像名称:标签
最后添加空格和.
4. 查看镜像
docker images
5. 生成容器
docker run -d -p 9001:8080 -v /www/wwwroot/yjl/weixin1027.jar:/var/lib/docker/jar/weixin.jar --name wxdocker weixindocker:1.0
上面的命令可以将容器里面的jar映射成系统工作目录里面对应的jar
docker run -d -p 9001:8080 weixindocker:1.0
上面的命令会直接读取容器里面的jar
参考链接
- https://www.cnblogs.com/xiexun/p/13458197.html
- https://www.reinforce.cn/t/653.html