将SpringBoot项目打成jar包
一、创建一个SpringBoot项目
二、在porm.xml里面添加配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.lym</groupId>
<artifactId>mock</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 使用maven打包项目需要添加build配置 -->
<build>
<finalName>docker-jar</finalName> <!--使用maven打包后的包名 -->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
三、使用maven打包。进入项目的主目录下(和porm.xml同级),使用mvn clean package -Dmaven.test.skip=true(-Dmaven.test.skip=true是为了排除项目中的test包) 打包项目,最终jar会放在target文件夹下。
安装docker
一、使用国内的daocloud一键安装docker
curl -sSL https://get.daocloud.io/docker | sh
如果报“Delta RPMs disabled because /usr/bin/applydeltarpm not installed.”错误,执行以下命令
yum provides '*/applydeltarpm' #查看依赖包的位置
yum -y install deltarpm #安装deltarpm
二、启动docker
systemctl start docker
三、检查docker是否安装成功
docker run hello-world
如果出现以下信息,表明docker安装成功
创建镜像
一、在服务器上建一个文件夹DockerFile,在文件夹下创建一个文件Dockerfile
mkdir DockerFile
touch Dockerfile
二、编辑Dockerfile文件
FROM java:8
VOLUME /tmp
COPY docker-jar.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar","--server.port=80","> /log/app.log"]
FROM:定制的镜像都是基于 FROM 的镜像,这里的java就是应用需要用到的java环境,版本号是8
VOLUME :声明容器中存储数据的目录(匿名卷),跟宿主机的某个目录绑定
COPY :复制docker-jar.jar到容器中并重新命名为app.jar
EXPOSE :暴露容器的端口(仅仅是声明,并不会实际绑定)
ENTRYPOINT :在启动容器的时候运行,这里用来启动springboot项目
三、构建镜像
将上面打的docker-java.jar包放到DockerFile目录下(和Dockerfile同一目录),并运行如下命令
docker build -t mock .
-t:指定镜像名称
.:当前目录
镜像构建完后,可以使用docker images 查看结果
四、启动容器
使用如下命令启动容器
docker run -d --name mock -P mock
或者
docker run -d --name mock -p 80:8080 mock
-d:默认不会进入容器,容器启动后会进入后台
-P:将容器内部使用的网络端口随机映射到我们使用的主机上
-p:将容器端口映射到指定的host端口上,这里是将8080端口映射到80端口上
--name:设置容器名称
如果上面的命令启动后,无法通过浏览器访问应用,尝试将newwork改成host
docker run -d --net="host" --name mock mock
--net="host":此时容器使用宿主机的ip和端口
如果需要查看容器的日志,可以使用
docker logs -f mock
网友评论