Docker 自定义镜像

之前博客写过在 Linux 上面部署前后端分离项目,服务器环境配置比较繁琐

使用 docker 构建镜像文件 来部署 springboot 项目,可以大大减少配置过程中的出错概率

基于基础镜像构建镜像文件

命令作用例子
FROM指定基础镜像,基于基础base镜像构建FROM centos:7
ENV设置环境变量,可在后面指令中使用ENV key value
COPYcopy本地文件至镜像文件内部COPY ./springboot-demo.jar /tpm/demo.jar
RUN执行Linux的shell命令,一般是安装过程的命令RUN yum install gcc
EXPOSE指定运行镜像文件时暴漏的端口EXPOSE 8080
ENTRYPOINT镜像中的启动命令,容器运行时自动调用ENTRYPOINT java -jar demo.jar

1. 编写 dockerfile 文件

# 新建一个dockerfile文件
vi dockerfile-springboot
# 依赖于openjdk-11构建docker镜像
FROM openjdk:11
# 将linux本地jar包copy到镜像文件内
COPY ./springboot/springboot-demo.jar /usr/src/demo.jar
# 暴露出server.port=8080端口
EXPOSE 8080
# java 项目启动命令---在docker run 容器的时候会自动调用该命令启动springboot项目
ENTRYPOINT java -jar /usr/src/demo.jar

2. 生成镜像文件

docker build -f dockerfile-springboot -t springboot-demo:1.0 .

# -f: 指定读取的 dockerfile 文件
# -t: 指定生成的docker镜像文件名字以及tag
# .: 代表从当前目录读取

 3. 运行容器

 docker run -d -p 80:8080 --name myspringbootdemo springboot-demo:1.0

 因为 tomcat 配置的server.port=8080,前端浏览器默认http请求在80端口,所以需要把80端口映     射到容器的8080端口。

4. 查看效果

 直接访问服务器所在公网ip

 5. 总结

         本文单纯部署了后端项目,没有部署前端项目,同样的可以基于nginx反向代理服务器构建一个镜像,然后把前端项目部署到镜像中,nginx 监听 80 端口,在转发请求到 tomcat 所在的镜像容器端口即可.

Docker允许用户通过Dockerfile来定义自己的镜像。下面是一个简单的示例,演示如何创建一个自定义镜像: 1. 首先,在一个空白目录中创建一个名为Dockerfile的文件。 2. 在Dockerfile中,使用FROM指令指定基础镜像。例如,可以选择一个适合你的应用程序的操作系统作为基础镜像。 ``` FROM ubuntu:latest ``` 3. 接下来,使用RUN指令执行一系列命令来设置镜像的环境。例如,安装一些软件包或配置一些文件。 ``` RUN apt-get update && apt-get install -y software-properties-common ``` 4. 使用COPY指令将本地文件复制到镜像中。例如,复制应用程序的源代码文件。 ``` COPY . /app ``` 5. 使用WORKDIR指令设置工作目录。例如,进入应用程序的根目录。 ``` WORKDIR /app ``` 6. 使用CMD指令定义容器启动时要运行的命令。例如,启动应用程序。 ``` CMD ["python", "app.py"] ``` 7. 保存并关闭Dockerfile。 接下来,你可以使用以下命令构建自定义镜像: ``` docker build -t my-custom-image:tag . ``` 其中,`-t`参数用于指定镜像的名称和标签,`.`表示Dockerfile所在的当前目录。 构建过程可能需要一些时间,取决于你的镜像大小和网络速度。构建完成后,你可以使用以下命令查看所有可用的镜像: ``` docker images ``` 你应该能够看到刚刚构建的自定义镜像。 希望这个简单示例可以帮助你开始创建自己的Docker自定义镜像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值