ADD eureka-server-0.0.1-SNAPSHOT.jar app.jar
#add命令把jar复制过去,
RUN bash -c 'touch /app.jar'
touch命令的作用是修改这个文件的访问时间和修改时间为当前时间。
例子:
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
解释:
java.security.SecureRandom源码分析
java.security.egd=file:/dev/./urandom
SecureRandom在java各种组件中使用广泛,可以可靠的产生随机数。
但在大量产生随机数的场景下,性能会较低。
这时可以使用"-Djava.security.egd=file:/dev/./urandom"
加快随机数产生过程。
作用:用于指定持久化目录
VOLUME /tmp
VOLUME 指定了临时文件目录为/tmp。
其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。
此步骤是可选的,如果涉及到文件系统的应用就很有必要了。
/tmp目录用来持久化到 Docker 数据文件夹,
因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
格式:
示例:
注:一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统,并具有以下功能:
试图从本地主机复制一些文件和文件夹到Docker镜像。
files的子文件夹是这样的:
folder1
file1
file2
folder2
file1
file2
正确写法:
COPY files/ /files/
参数:https://cloud.tencent.com/developer/ask/98544
COPY : 复制命令,COPY package.json /usr/src/app/
COPY [--chown=<user>:<group>] <源路径>... <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]
例子:
#ADD 添加本地文件到镜像
ADD pcre-8.37.tar.gz /usr/local/src
ADD nginx-1.9.3.tar.gz /usr/local/src
RUN:指令是用来执行命令行命令的。由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一。
RUN <command> : RUN echo 'Hello, Docker!'
/usr/share/nginx/html/index.html
RUN ["executable", "param1", "param2"] : RUN ["/bin/bash", "-c", "echo hello"]
例子:
#RUN 在镜像中执行命令
RUN yum install -y wget gcc_c++ make openssl-devel
RUN useradd -s /sbin/nologin -M www
RUN yum install -y gcc gcc-c++
RUN ./configure --prefix=/usr/local/nginx \
--user=www --group=www --with-http_ssl_module \
--with-http_stub_status_module \
--with-pcre=/usr/local/src/pcre-8.37 && make && make install
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
WORKDIR 指定工作目录,使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),
以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。
WORKDIR <工作目录路径>
相当于 cd
例子:
#WORKDIR 镜像中切换到目录
WORKDIR /usr/local/src/nginx-1.9.3
ENV 设置环境变量,格式有两种
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...
例子:
#配置环境变量
ENV PATH /usr/local/nginx/sbin:$PATH