为什么用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也行,把本地测试环境改成和生产环境都一样就可以了,但是都折腾这么久了,要继续~
顺手记录
build.sh
docker build -t bkl/kkfileview:4.4.0 .
run.sh
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