美文网首页
dockerfile踩坑

dockerfile踩坑

作者: 卫彬TM | 来源:发表于2020-07-17 17:31 被阅读0次

在做镜像的过程中遇到较多问题,踩了很多坑,简单记录如下

运行后就exited(0)

问题:使用CMD ["sh","./startup.sh","&"] 或者ENTRYPOINT ["sh","./startup.sh"]制作的镜像,docker run -d 不加-it参数运行后就exited(0),docker run -dit 增加-it参数则正常运行。

做的组件需要运行在公司的SaaS平台上,不通过CI平台发布、自定义的仅支持基础功能,docker run -d 不加-it参数可以运行OK,在SaaS平台上也可以OK。

猜测是容器执行了命令后,结束容器退出,1号进程不是常驻的服务器进行,尝试实验:
1.脚本中增加sleep 999999d,
2.CMD 后面多个命令先指定一个1号进程为bash的等,
3.不使用脚本,直接使用启动命令,且不放入后台有tty窗口输出的
实验结果:
1增加指定时间是OK的,但是不是正常解决途径;
2.增加多个命令没找到可行方案,后续再做下实验(待研究);
3.执行使用命令也是可行的,启动脚本增加ps -aux,可以看到1号进程是startup.sh,执行结束就退出。


image.png

CMD、ENTRYPOINT参数使用/原理,查看很多资料,https://www.cnblogs.com/ilinuxer/p/6188303.html

  • Dockerfile 如下
# Version V0.0.1
FROM openjdk:8-jre-slim

MAINTAINER cszbb <wdjlwz@163.com>
RUN ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    apt-get clean &&\
    apt-get update && \
    apt-get -qy install \
                wget \
                telnet \
                iputils-ping \
                unzip \
                procps \
                net-tools \
                iproute2 
#ENV Setting

#copy jmeter包到容器内部
RUN mkdir /mock
COPY v-mock1.1.0.jar /mock
COPY startup.sh /mock
 
WORKDIR /mock
RUN chmod 777 startup.sh
#CMD ["sh","./startup.sh","&"] 
CMD nohup java -jar v-mock*.jar --server.port=18089
#ENTRYPOINT ["sh","./startup.sh"]
EXPOSE 18089

startup.sh如下(不使用)

#!/bin/bash
nohup java -jar v-mock*.jar --server.port=18089 > nohup.log 2>&1 &
#2>&1 2    标准错误(错误信息输出);>&1 继续输出到标准输出
echo "url:http://127.0.0.1:18089"
echo "U/P:vmock/vmock123"
ps -aux

build是找不到文件或目录

例如如下,报错,增加RUN pwd 查看发现ADD后目录切换为Autotest ,建议使用./ 或者绝对路径

ADD Autotest .
# RUN pwd && ls -l
RUN cd Autotest 

build时Sending build context to Docker daemon 9.5GB

build时时间过长,Sending build context to Docker daemon 9.5GB,Dcokerfile 、程序、等在/data目录下,此目录下由很多其他业务,有40~50GB的文件。
build会将指定的目录下的所有文件发到Docker daemon中,所一定指定好程序目录或者创建好目录,将dockerfile及程序都在此目录下执行,减少误操作风险。

相关文章

  • dockerfile踩坑

    在做镜像的过程中遇到较多问题,踩了很多坑,简单记录如下 运行后就exited(0) 问题:使用CMD ["sh",...

  • Dockerfile 构建 Vue 镜像踩坑记

    原文由底层贫困人员发表于TesterHome社区,点击原文链接[https://testerhome.com/to...

  • JavaScrip-StepPitGuide《JavaScrip

    《JavaScript踩坑指南》JavaScrip-StepPitGuide? 《JavaScript踩坑指南》 ...

  • 算法踩坑6-二叉搜索树排序

    背景 接上面五篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 ...

  • 算法踩坑5-归并排序

    背景 接上面四篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 来...

  • D1094:踩坑的价值最大化

    是人就会踩坑,不踩坑理论上就不属于人类,踩坑是人之常情,能回头站在坑边反思,才是对踩过的的坑价值最大化的体现,要不...

  • 交互设计师所要避免的几个坑

    前言 工作中难免会踩到几个坑,即使现在不踩以后还会踩,只有踩过才会深刻记住,踩过说明爱过!但是踩过的坑必须把坑填满...

  • 踩坑,使用cocoaPods import导入时没有提示的解决办

    续上篇写的,踩坑,cocoaPods ---- framework not found Pods之后 ,又踩坑了。...

  • 2020-10-19随笔 踩坑0传值

    踩坑:当值传入0时,if条件判断时候会自己转换,记录踩坑。

  • 随笔

    读书啊,就是一个坑踩完了又掉进另一个坑,先说踩读书没用的坑,爬出来了,再踩读书要多的坑,之后再踩读书要精啊,读书要...

网友评论

      本文标题:dockerfile踩坑

      本文链接:https://www.haomeiwen.com/subject/jgaghktx.html