将自己的程序打包成Docker镜像映射公网访问

本文介绍了如何使用Docker进行容器化部署,包括Dockerfile的编写、镜像制作、启动容器以及如何通过Frp实现远程联调和公网访问。开发者只需更新jar包,就能快速发布应用更新。
摘要由CSDN通过智能技术生成

背景

Docker是现在主流的容器技术,使用容器部署可以忽略应用依赖环境,我们可以很便捷地部署、更新应用。我们在联调开发过程中,可以借助Docker+Frp这一方案实现远程联调。

Dockerfile编写

我现在在/opt/english-learn目录下准备好了我的程序包english-learn-backend-1.0-SNAPSHOT.jar,下面我会把他打包进Docker镜像中。我们还需要Dockerfile文件,下面是我的Dockerfile文件示例:

# 使用官方的Java 8运行时作为父镜像
FROM openjdk:8-jre

# 将jar包添加到容器中
COPY ./*.jar /app.jar

# 设置工作目录
WORKDIR /

# 指定容器启动时执行的命令
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]

这个Dockerfile定义了镜像制作步骤,首先下载openjdk:8-jre基础镜像,然后将当前目录/opt/english-learn下的*.jar文件复制到容器/根目录下,并且重新命名包名为app.jar。设置工作目录为/根目录,最后指定启动容器的命令。

镜像制作

Dockerfile编写完成后,我的/opt/english-learn目录下就有两个文件:

root@root:/opt/english-learn# ls -l
total 48844
-rw-r--r-- 1 root root      276 May  4 02:59 Dockerfile
-rw-r--r-- 1 root root 50005065 May  4 16:51 english-learn-backend-1.0-SNAPSHOT.jar

接下来我们直接制作镜像:

docker build -t english-learn .

等待命令执行完成,这样我们就制作好了我们的english-learn镜像。docker images查看Dcoker镜像:

root@root:/opt/english-learn# docker images
REPOSITORY                  TAG                    IMAGE ID       CREATED             SIZE
english-learn               latest                 85499e063e25   About an hour ago   316MB

启动容器

在镜像制作好之后我们就可以启动应用容器了:

docker run --name english-learn -d -p 18080:8080 english-learn

我们运行english-learn:latest镜像,指定容器名称为english-learn,让容器在后台运行,将容器内的8080端口映射到虚机的18080。这样我们就可以使用ip:18080访问服务了。

因为每次Jar包更新我们都需要重新重新执行上面的步骤,重新制作镜像->重启容器。我给出我的镜像重新构建的脚本rebuild.sh,一键重构镜像并且运行容器去更新应用:

docker stop english-learn
docker rm english-learn
docker build -t english-learn .
docker run --name english-learn -d -p 19063:8080 english-learn

大家在使用过程中只要把english-learn替换成自己的应用名称。这样的话每次更新我们只要更换目录下的Jar包,再执行rebuild.sh脚本文件即可完成应用更新的发布。

公网访问

在我们使用Docker部署我们的应用之后,有时候我们远程联调需要把服务暴露到公网,这个时候就需要用到内网穿透的解决方案,frp是个不错的选择。

这需要我们有一台公网服务器,我们在服务器端配置frp服务端,在我们内网虚机中配置frp客户端,通过配置把我们的内网服务映射到公网。这里不做详细介绍。感兴趣的可私信留言,也可以参见本人往期博客《树莓派内网端口映射》。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值