编写Dockerfile文件

镜像是容器的基础,容器基于镜像定义的内容来运行。镜像是多层存储,每一层是前一层基础上进行的修改。

定制镜像时,一般使用Dockerfile来完成。Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建镜像的其中一层,因此每一条指令的内容,就是描述该层应该如何构建。

Dockerfile文件编写与应用实际需求直接相关,每个应用所写的Dockerfile会有所区别,请根据业务实际需求来写Dockerfile文件。

复制代码
FROM centos:7.1.1503  #表示此镜像以centos7.1.1503为基础镜像
RUN mkdir -p /usr/local/mongodb/data \
 && mkdir -p /usr/local/mongodb/bin \
 && mkdir -p /root/apache-tomcat-7.0.82 \
 && mkdir -p /root/jdk1.8.0_151   #创建文件夹,存放数据和依赖文件,建议多个命令写成一条,可减小镜像大小
COPY ./jdk1.8.0_151 /root/jdk1.8.0_151  #将jdk1.8.0_151目录下的文件拷贝到容器目录下
CPOY ./start_tomcat_and_mongo.sh /root/ #将start_tomcat_and_mongo.sh拷贝到容器/root/目录下

RUN chown root:root -R /root \
 && echo "JAVA_HOME=/root/jdk1.8.0_151" >>/etc/profile \
 && echo "PATH=\$JAVA_HOME/bin:$PATH" >>/etc/profile \
 && echo "CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >>/etc/profile \
 && chmod +x /root \
 && chmod +x /root/start_tomcat_and_mongo.sh  #注入JAVA环境变量

ENTRYPOINT ["/root/start_tomcat_and_mongo.sh"]   #容器启动的时候会自动运行里面的命令,可以一条可以多条,也可以是一个脚本
复制代码

 

dockerfile构建镜像

在Docker中,通过编写Dockerfile来构建镜像是一种常见做法。Dockerfile是一个文本文件,它包含了构建镜像所需的所有命令。下面是一些基本步骤和示例,帮助你通过Dockerfile构建镜像。

1. 创建Dockerfile

首先,你需要在你的项目根目录下创建一个名为Dockerfile的文件(没有文件扩展名)。

2. 编写Dockerfile

在Dockerfile中,你可以使用各种指令来定义你的镜像。以下是一些常用的指令:

  • FROM: 指定基础镜像,这是构建镜像的第一步。

  • RUN: 在镜像上执行命令,例如安装软件包。

  • COPY: 将文件或目录从构建上下文复制到镜像中。

  • CMD: 指定容器启动时运行的命令。

  • ENV: 设置环境变量。

  • EXPOSE: 声明容器运行时监听的端口。

  • WORKDIR: 设置工作目录。

示例Dockerfile

假设你想创建一个简单的Node.js应用镜像:

 
 
# 使用官方Node.js 14镜像作为基础镜像
FROM node:14
 
# 设置工作目录
WORKDIR /app
 
# 将当前目录下的所有文件复制到/app目录下
COPY . /app
 
# 安装项目依赖
RUN npm install
 
# 暴露3000端口,这是Node.js应用常用的端口
EXPOSE 3000
 
# 启动Node.js应用
CMD ["node", "app.js"]

3. 构建镜像

在包含Dockerfile的目录中打开终端或命令提示符,运行以下命令来构建镜像:

 
 
docker build -t your-image-name .

这里:

  • -t your-image-name 是为你的镜像指定一个名字和标签(例如myapp:1.0)。

  • . 表示当前目录是Dockerfile的上下文(即构建时使用的文件和目录)。

4. 运行容器

构建完镜像后,你可以使用以下命令来运行一个容器:

 
 
docker run -p 49160:3000 your-image-name

这里:

  • -p 49160:3000 将容器的3000端口映射到主机的49160端口。

  • your-image-name 是你的镜像名称。

总结

通过以上步骤,你可以使用Dockerfile来构建自己的Docker镜像,并在Docker容器中运行应用。确保你的Dockerfile正确无误,并且所有必要的文件和依赖都包含在内,以便顺利构建和运行你的应用。

posted @   zhaoguanhao  阅读(97)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示