基于Dockerfile部署Springboot应用

DockerFile 常用命令

ADD 复制文件,格式:ADD

  1. # 将当前目录下的my-spring-boot.jar包复制到docker容器的/目录下
  2. ADD my-spring-boot.jar /docker-spring-boot.jar

ENTRYPOINT 指定Docker容器启动时执行的命令 格式: ENTRYPOINT [“executable”, “param1”,”param2”…]

  1. # 指定docker容器启动时运行jar包
  2. # 这里的jar包路径一定要和使用ADD命令复制的jar目录保持一致,否则在docker run启动容器时会找不到springboot的jar包
  3. ENTRYPOINT ["java", "-jar","/docker-spring-boot.jar"]

ENV 用于设置环境变量,格式:ENV

  1. # mysql运行时设置root密码
  2. ENV MYSQL_ROOT_PASSWORD root

EXPOSE 声明容器暴露的端口(只声明不会打开端口)格式: EXPOSE …

  1. # 声明容器暴露8080端口
  2. EXPOSE 8080

FROM 指定所需依赖的基础镜像,格式:FROM : 一个DockerFile文件中只允许一个FROM,如果有多个FROM则以最后一个为准

  1. #指定镜像需要依赖java8的镜像,
  2. FROM java:8

MAINTAINER 指定容器的作者,格式:MAINTAINER

  1. MAINTAINER miekcy

在容器创建过程中执行的命令,可以为容器创建前自定义一些行为,如:安装一些软件,创建一些文件等 格式: RUN RUN [“executable”, “param1”,”param2”…]

  1. # 在容器创建过程中需要在/目录下创建一个my-spring-boot.jar的文件
  2. RUN bash -c 'touch /my-spring-boot.jar'

DockerFile 创建SpringBoot应用镜像

Dockerfile文件

  1. #指定依赖的基础镜像
  2. FROM java:8
  3. #指定jar包拷贝到Docker容器的目录,不指定src目录时,jar包需要和Dockerfile文件在文件夹下
  4. ADD my-spring-0.0.5-SNAPSHOT.jar /springboot-docker.jar
  5. #声明端口
  6. EXPOSE 8080
  7. #指定Docker容器启动时运行的jar包
  8. ENTRYPOINT ["java", "-jar", "/springboot-docker.jar"]
  9. #指定维护者的名字
  10. MAINTAINER Mickey

打jar包

Dockerfile和jar包上传到linux服务器,注意这两个文件一定要在同一个文件夹下

  1. # maven 命令打jar包
  2. mvn clean package -Dmaven.test.skip=true

创建docker镜像

  1. # -t 表示指定镜像仓库名称/镜像名称:镜像标签 .表示使用当前目录下的dockerfile
  2. docker build -t my-spring-boot:0.0.1-SNAPSHOT .

成功输出信息

  1. [root@localhost myspring-compose]# docker build -t my-spring:0.0.5-SNAPSHOT.jar .
  2. Sending build context to Docker daemon 26.23MB
  3. Step 1/5 : FROM java:8
  4. ---> d23bdf5b1b1b
  5. Step 2/5 : ADD my-spring-0.0.5-SNAPSHOT.jar /springboot-docker.jar
  6. ---> f85be53e378b
  7. Step 3/5 : EXPOSE 8080
  8. ---> Running in 44a75f4c1eef
  9. Removing intermediate container 44a75f4c1eef
  10. ---> 8847ef1e428d
  11. Step 4/5 : ENTRYPOINT ["java", "-jar", "/springboot-docker.jar"]
  12. ---> Running in 668296a66505
  13. Removing intermediate container 668296a66505
  14. ---> 113002fdbed2
  15. Step 5/5 : MAINTAINER Mickey
  16. ---> Running in 68364256f4f6
  17. Removing intermediate container 68364256f4f6
  18. ---> 0459f6fb2f5d
  19. Successfully built 0459f6fb2f5d
  20. Successfully tagged my-spring:0.0.5-SNAPSHOT.jar

查看Docker镜像

  1. docker images

创建并启动容器

  1. docker run -p 8080:8080 \
  2. --name myspring \
  3. --link mysql:db \
  4. -d spring/my-spring:0.0.5-SNAPSHOT