【全栈之路】springboot项目入门级docker打包镜像发布和安装
应项目需要,springboot项目的数据库是mysql,缓存是redis,mysql和redis都是docker环境跑的,boot项目依赖jdk8需要单独的容器发布和跑起来,所以方案有很多种,本文采用最简单的那种比较繁琐的打包成jar的方式并运行(注意以下红色部分的代码)。首先,pom配置如下<modelVersion>4.0.0</modelVersion>...
应项目需要,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
更多推荐
所有评论(0)