前言

我的dockerfile
FROM registry.cn-qingdao.aliyuncs.com/healerjean/dev-server:1
#FROM java:8
MAINTAINER HealerJean

ADD target/admin-1.0-SNAPSHOT.jar app.jar


#将字体打包到镜像中
COPY dockerDirectory/PingFang.ttc /usr/share/fonts/truetype/dejavu/

CMD ["java","-jar","-Xms256m","-Xmx7000m","/app.jar"]

1、FROM

FROM 指令用于指定其后构建新镜像所使用的基础镜像。FROM 指令必是 Dockerfile 文件中的首条命令,启动构建流程后,Docker 将会基于该镜像构建新镜像,FROM 后的命令也会基于这个基础镜像。 这就是为什么我上面写了java:8和来自阿里云的url,一开始阿里云自定镜像并没有创建成功,所以用了java8

2、MAINTAINER 作者

3、COPY 复制

COPY dockerDirectory/PingFang.ttc /usr/share/fonts/truetype/dejavu/

3.1<源路径>可以是多个,甚至可以是通配符, 但是只能是相对路径
3.2、<目标路径>可以是容器内的绝对路径,也可以是相对于工作目录的相对路径,这里官方说是目标路径不存在的话会自动创建,但是我测试的时候,并没有自动创建。而是报错了

4、ADD 更高级的复制文件

ADD target/admin-1.0-SNAPSHOT.jar app.jar

ADD 指令和 COPY 的格式和性质基本一致。但是在 COPY 基础上增加了一些功能。比如 <源路径>可以是一个 URL,这种情况下,Docker 引擎会试图去下载这个链接的文件放到 <目标路径>去。

进入容器中观察,发现直接app.jar就在根目录下面,说吧是根据From的基础镜像打包进去的

root@19d5e118852b-dev-server-server-dev-8086-1:/# cd /
root@19d5e118852b-dev-server-server-dev-8086-1:/# ls -l
total 78744
-rw-r--r--   1 root root 80568237 Aug 29 03:24 app.jar
drwxr-xr-x   2 root root     4096 Jan 17  2017 bin
drwxr-xr-x   2 root root     4096 Dec 28  2016 boot
drwxr-xr-x   5 root root      340 Aug 29 03:33 dev
drwxr-xr-x  83 root root     4096 Aug 29 03:33 etc
drwxr-xr-x   2 root root     4096 Dec 28  2016 home
drwxr-xr-x  13 root root     4096 Jan 17  2017 lib
drwxr-xr-x   2 root root     4096 Jan 16  2017 lib64
drwxr-xr-x   2 root root     4096 Jan 16  2017 media
drwxr-xr-x   2 root root     4096 Jan 16  2017 mnt
drwxr-xr-x   2 root root     4096 Jan 16  2017 opt
dr-xr-xr-x 142 root root        0 Aug 29 03:33 proc
drwx------   2 root root     4096 Jan 16  2017 root
drwxr-xr-x   3 root root     4096 Jan 16  2017 run
drwxr-xr-x   2 root root     4096 Jan 16  2017 sbin
drwxr-xr-x   2 root root     4096 Jan 16  2017 srv
dr-xr-xr-x  13 root root        0 Aug 29 03:33 sys
drwxrwxrwt   7 root root     4096 Aug 29 03:33 tmp
drwxr-xr-x  32 root root     4096 Aug 29 03:33 usr
drwxr-xr-x  23 root root     4096 Jan 17  2017 var
root@19d5e118852b-dev-server-server-dev-8086-1:/# 

5、CMD 指定在容器启动时所要执行的命令

CMD [“executable”,“param1”,“param2”]

CMD ["java","-jar","-Xms256m","-Xmx7000m","/app.jar"]

ContactAuthor

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐