Linux-SpringBoot整合Docker部署镜像时的DockerFile文件以及相关命令

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_37896194/article/details/98635342

一、DockerFile文件

注:方式1 是我在SpringBoot整合Docker构建镜像时使用的DockerFile文件,可以自行修改。

1、基于已有的JDK镜像对SpringBoot项目进行构建镜像

#设置JDK镜像
FROM openjdk:8-jdk-slim

VOLUME /tmp

MAINTAINER sunhui

#设置时区
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
RUN echo 'Asia/Shanghai' >/etc/timezone
RUN echo $JAVA_OPTS

ADD task-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

2、基于ubuntu 的镜像($app 此处为占位符号,替换为自己的spring boot 项目的jar)

FROM ubuntu:16.04

MAINTAINER sunhui

ADD jdk-8u151-linux-x64.tar.gz /usr/local/jdk8

ENV JAVA_HOME /usr/local/jdk8/jdk1.8.0_151  
ENV JRE_HOME $JAVA_HOME/jre  
ENV CLASSPATH :$JAVA_HOME/lib:$JRE_HOME/lib  
ENV PATH $PATH:$JAVA_HOME/bin  

ARG appADD $app app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

二、Docker命令及解释

  • FROM:指定所创建镜像的基础镜像,本地没有就会去官方库下载
  • MAINTAINER:作者信息
  • RUN:运行指定命令。创建镜像的重点,每一个条RUN 的行为,就和手工建立镜像的过程一样:新建立一层,在其上执行这些命令,执行结束后,提交这一层的修改,构成新的镜像。上面的写法有6个RUN语句,那就会创建6层镜像,结果就是产生非常臃肿、非常多层的镜像。所以当命令比较多时要用 \ 换行 和 && 连接符连接命令。用尽量少的RUN语句。上面就可以这样写:RUN apt-get update \ && apt-get install -y openssh-server…
  • CMD:指定容器启动时默认执行的命令,每个Dockerfile文件只能有一条CMD命令,Docker 不是虚拟机,容器就是进程。既然是进程,那么在启动容器的时候,需要指定所运行的程序及参数。 CMD 指令就是用于指定默认的容器主进程的启动命令的。
  • EXPOSE:声明镜像内服务所监听的端口
  • ADD/COPY:复制文件
  • ENTRYPOINT:指定镜像的默认入口命令。该命令会在容器启动时作为根命令执行,所有传入值作为该命令的参数。
  • ENV:设置环境变量,无论是后面的其它指令,如 RUN ,还是运行时的应用,都可以直接使用这里定义的环境变量。
  • ARG:指定一些镜像内使用的参数(例如版本号),在执行docker build命令时以–build-arg< varname>=< value>的格式传入。
  • WORKDIR:指定工作目录

三、Linux中使用Docker命令构建SpringBoot镜像

        准备工作,先在Linux系统中安装好Docker容器并启动,然后将制作好的DockerFile文件和SpringBoot的jar包放在同一目录下,切记不能放在根目录(走过坑),进入该目录进行构建镜像。

1、构建镜像命令:docker build -t 镜像名:版本号 .

示例:最后面有个点哦,指的是当前目录下的DockerFile文件,千万不能落下!

[root@izuf60j0xye9c3vxjqujjiz local]# docker build -t task:xpv2.0 .

2、查看镜像命令:docker images

[root@izuf60j0xye9c3vxjqujjiz local]# docker images
REPOSITORY                              TAG                       IMAGE ID            CREATED             SIZE
task                                    xpv2.0                    ec7ca41b419b        24 hours ago        378 MB
ccr.ccs.tencentyun.com/linshang/task    xpv1.1                    d1211f22147e        25 hours ago        378 MB
task-svc                                v1.1                      d1211f22147e        25 hours ago        378 MB
ccr.ccs.tencentyun.com/linshang/oauth   test1.1                   af93de61ae81        7 days ago          784 MB
docker.io/openjdk                       8-jdk-slim                e95346262d2e        2 weeks ago         284 MB
docker.io/openjdk                       12.0.1-jdk-oraclelinux7   e92ef2c3a3dd        6 weeks ago         470 MB
docker.io/rabbitmq                      3-management              df6f26ea3e53        3 months ago        213 MB
docker.io/tomcat                        latest                    5a069ba3df4d        3 months ago        465 MB
docker.io/redis                         latest                    a55fbf438dfd        4 months ago        95 MB
docker.io/mysql                         5.5                       4ee01d11a48b        4 months ago        205 MB
docker.io/mysql                         latest                    7bb2586065cd        4 months ago        477 MB
docker.io/java                          8                         d23bdf5b1b1b        2 years ago         643 MB

3、复制一份修改标签供腾讯云用

[root@izuf60j0xye9c3vxjqujjiz local]# sudo docker tag 6dba9e8c6c6a ccr.ccs.tencentyun.com/linshang/card:test2.0
[root@izuf60j0xye9c3vxjqujjiz local]# docker images
REPOSITORY                              TAG                       IMAGE ID            CREATED             SIZE
ccr.ccs.tencentyun.com/linshang/task    xpv2.0                    ec7ca41b419b        About an hour ago   378 MB
task                                    xpv2.0                    ec7ca41b419b        About an hour ago   378 MB
ccr.ccs.tencentyun.com/linshang/task    xpv1.1                    d1211f22147e        2 hours ago         378 MB
task-svc                                v1.1                      d1211f22147e        2 hours ago         378 MB
ccr.ccs.tencentyun.com/linshang/oauth   test1.1                   af93de61ae81        6 days ago          784 MB
docker.io/openjdk                       8-jdk-slim                e95346262d2e        2 weeks ago         284 MB
docker.io/openjdk                       12.0.1-jdk-oraclelinux7   e92ef2c3a3dd        5 weeks ago         470 MB
docker.io/rabbitmq                      3-management              df6f26ea3e53        3 months ago        213 MB
docker.io/tomcat                        latest                    5a069ba3df4d        3 months ago        465 MB
docker.io/redis                         latest                    a55fbf438dfd        4 months ago        95 MB
docker.io/mysql                         5.5                       4ee01d11a48b        4 months ago        205 MB
docker.io/mysql                         latest                    7bb2586065cd        4 months ago        477 MB
docker.io/java                          8                         d23bdf5b1b1b        2 years ago         643 MB

4、将复制好的镜像上传至腾讯云Docker镜像仓库中,先登录,再push

[root@izuf60j0xye9c3vxjqujjiz local]# sudo docker login --username=用户名 ccr.ccs.tencentyun.com

 输入密码后,进行push操作

[root@izuf60j0xye9c3vxjqujjiz local]# sudo docker push ccr.ccs.tencentyun.com/linshang/card:test2.0

5、登录到腾讯云服务器平台,查看Docker镜像仓库。

注意:这是本人的操作过程,根据自己的文件和参数自行修改!!!

猜你喜欢

转载自blog.csdn.net/qq_37896194/article/details/98635342