dockerfile简解以及复制到容器中

前言

我的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dockerfile 是 Docker 用来构建 Docker 镜像的配置文件,通过 Dockerfile 可以实现自动化构建和部署应用程序的目的。在使用 Docker 构建 Nginx 镜像时,通常需要将宿主机上的一些代码文件复制到 Nginx 容器,以便该容器可以运行该应用程序。 首先,我们需要在 Dockerfile 使用 COPY 命令来将宿主机上的代码文件复制到 Nginx 容器。例如: ``` COPY /path/to/host/code /usr/share/nginx/html/ ``` 上面的命令将宿主机的 /path/to/host/code 目录下的所有内容,复制到 Nginx 容器的 /usr/share/nginx/html/ 目录。这里要注意的是,COPY 命令必须放在 Dockerfile 的 FROM 行之前。 需要说明的是,COPY 命令不仅可以将宿主机的代码文件复制容器,还可以将容器文件复制到另一个容器。此外,还可以使用 ADD 命令来复制文件,但 ADD 命令支持更多功能,如自动解压缩压缩文件等。 最后,我们需要使用 Docker build 命令来构建 Nginx 镜像,并将它部署到 Docker 容器。例如: ``` docker build -t my-nginx-image ./ ``` 上面的命令将会在当前目录下的 Dockerfile 构建一个名为 my-nginx-image 的 Docker 镜像。构建完成后,我们可以使用 Docker run 命令来运行该镜像。 综上所述,Dockerfile 通过 COPY 命令可以将宿主机的代码文件复制到 Nginx 容器,从而实现在容器运行应用程序的目的。使用 Docker 可以极大地简化应用程序的部署和运行,并提高应用程序的可移植性和可伸缩性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值