为什么用docker export呢,😔~由于客户环境太恶心了,测试一次更是麻烦,所以什么都得在本地调试完成,争取每次测试+上线一次通过才行,说多了都是泪。
由于踩坑几次了,每次都忘记,且每次网上找半天也难以发现问题,今日决定记录一笔。
在进行docker export导出镜像,然后import后运行,发现要么提示无执行命令,要么找不到执行程序,这都是因为在export后都失效了,所以我们需要在当前Dockerfile里重新声明一下,然后我这还发现容器内中文乱码,所以编码也需设置一下,具体配置如下:
Dockerfile
FROM libreoffice_jre:v3
MAINTAINER baikunlong "bklbug@qq.com"
WORKDIR /opt/kkFileView-4.4.0-SNAPSHOT
# 开始重新设置下相关环境变量
ENV LC_ALL zh_CN.utf8
ENV JAVA_HOME /usr/local/jdk1.8.0_251
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
# 结束重新设置下相关环境变量
ENV KKFILEVIEW_BIN_FOLDER /opt/kkFileView-4.4.0-SNAPSHOT/bin
ADD kkFileView-4.4.0-SNAPSHOT.tar.gz /opt/
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Dspring.config.location=/opt/kkFileView-4.4.0-SNAPSHOT/config/application.properties","-jar","/opt/kkFileView-4.4.0-SNAPSHOT/bin/kkFileView-4.4.0-SNAPSHOT.jar",">","/opt/kkFileView-4.4.0-SNAPSHOT/log/kkFileView.log","2>&1"]
想了想,其实用docker save也行,把本地测试环境改成和生产环境都一样就可以了,但是都折腾这么久了,要继续~
对于已经运行但没配置过编码的容器,在进入容器前可加LANG环境变量,如下:docker exec -it nginx env LANG=C.UTF-8 /bin/bash
这样进入容器后就能显示中文了,但是还是强烈推荐删了重新build镜像,比如我在用kkfileview文件预览那块时中文文件名的文件会报错的。
顺手记录
build.sh文章来源:https://www.toymoban.com/news/detail-610311.html
docker build -t bkl/kkfileview:4.4.0 .
run.sh文章来源地址https://www.toymoban.com/news/detail-610311.html
docker rm -f kkfileview18012
#docker run -d --name kkfileview18012 -p 18012:18012 --restart=always --privileged=true -v /docker_data/kkfileview18012/log:/opt/kkFileView-4.4.0-SNAPSHOT/log -v /docker_data/kkfileview18012/config:/opt/kkFileView-4.4.0-SNAPSHOT/config -v /etc/localtime:/etc/localtime:ro -e TZ=Asia/Shanghai bkl/kkfileview:4.4.0
docker run -d --name kkfileview18012 -p 18012:18012 --restart=always --privileged=true -v /docker_data/kkfileview18012/file:/opt/kkFileView-4.4.0-SNAPSHOT/file -v /docker_data/kkfileview18012/log:/opt/kkFileView-4.4.0-SNAPSHOT/log -v /docker_data/kkfileview18012/config:/opt/kkFileView-4.4.0-SNAPSHOT/config -v /etc/localtime:/etc/localtime:ro -e TZ=Asia/Shanghai bkl/kkfileview:4.4.0
docker logs -f kkfileview18012
到了这里,关于docker export,import后无法运行,如java命令找不到,运行后容器内编码有问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!