应项目需要,springboot项目的数据库是mysql,缓存是redis,mysql和redis都是docker环境跑的,boot项目依赖jdk8需要单独的容器发布和跑起来,所以方案有很多种,本文采用最简单的那种比较繁琐的打包成jar的方式并运行(注意以下红色部分的代码)。

首先,pom配置如下

<modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.shuogesha</groupId>
    <artifactId>base2020</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>base2020</name>
    <description>Demo project for Spring Boot</description>
    <packaging>jar</packaging>

其次如果项目采用 application.properties、application.yml要配置多环境,我们采用yml的配置

application.yml

#配置读取的环境
spring:
  profiles:
    active: docker

 application-docker.yml修改原因,因为没有暴露容器的mysql、redis端口出来连接而是采用docker--link的别名方式,所以要修改别名的方式来修改链接地址host,列子

#==========redis 配置信息===========#
redis:
    host: shuogesha-redis
    port: 6379
    password:
    pool:
      max-active: 8
      max-wait: 1
      max-idle: 8
      min-idle: 0
    timeout: 0

配置好以上步骤,项目pom文件直接打包成jar

clean package -Dmaven.test.skip=true

此时需要编写Dockerfile文件,生成docker的镜像

# Docker image for base2020 run
# VERSION 0.0.1
# Author: shuogesha
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER shuogesha <2596310607@qq.com>
# VOLUME 指定了临时文件目录为/data。
ARG workdir=/data
VOLUME ${workdir}
WORKDIR ${workdir}
# 将jar包添加到容器中并更名为app.jar
ADD target/base2020-0.0.1-SNAPSHOT.jar /app.jar
# 指定8080端口
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

然后在项目的根目录之下命令,cd到项目的根目录

执行镜像生成命令,可指定版本号,现在测试直接忽略掉,注意后面的。号不可少

打包项目并制定版本号,然后查看比对是否成功
docker build -t shuogesha/base2020 .

以上打包成功以后可运行docker images查看是否成功

按照步骤一步一步的来,毫无破绽,然后开始运行命令,当然可以把8080端口暴露出来,也可以把本地的目录映射到容器上,方便比如做的一些图片上传需要一直保存,以免容器重新启动以后数据丢失;

docker run -d --name  base2020 --link redis5.0.5:shuogesha-redis  --link mysql5.6:shuogesha-mysql -v /Users/zhaohaiyuan/Downloads/docker/base2020:/data -p 8080:8080 shuogesha/base2020

然后可以查看容器是否运行

docker container ls -a

如果容器启动失败或者成功可以查看容器的日志通过容器的id

docker logs -f -t 容器id

项目源码:https://gitee.com/shuogesha/shop2020 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐