Docker部署SpringBoot项目

在docker上部署springboot项目

首先在springboot项目的pom.xml文件中添加Docker镜像名称:

<properties>
	<docker.image.prefix>springboot</docker.image.prefix>
</properties>

在plugin中添加docker构建插件:

<build>
 <plugins>
  <plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
  </plugin>
  <!-- Docker maven plugin -->
  <plugin>
   <groupId>com.spotify</groupId>
   <artifactId>docker-maven-plugin</artifactId>
   <version>1.0.0</version>
   <configuration>
    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
    <dockerDirectory>src/main/docker</dockerDirectory>
    <resources>
     <resource>
      <targetPath>/</targetPath>
      <directory>${project.build.directory}</directory>
      <include>${project.build.finalName}.jar</include>
     </resource>
    </resources>
   </configuration>
  </plugin>
  <!-- Docker maven plugin -->
 </plugins>
</build>

使用maven打jar包,扔到centos上。
vim创建Dockerfile

FROM java:8
# FROM:表示基础镜像,即运行环境
VOLUME /tmp
# VOLUME:一个特别指定的目录,用于存储数据,该命令的作用是在/var/lib/docker创建一个名为tmp的目录,在开启redis服务时,需要特别指定redis的数据存储在哪个文件夹,此时这个命令就十分有用
ADD docker-0.0.1-SNAPSHOT.jar app.jar 
# ADD:拷贝文件并且重命名
EXPOSE 8080
# EXPOSE:并不是真正的发布端口,这个只是容器部署人员与建立image的人员之间的交流,即建立image的人员告诉容器布署人员容器应该映射哪个端口给外界
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

在centos创建名为docker的文件夹,将jar包和Dockerfile都扔进去
进入该文件夹,运行命令:将项目构建为一个image

docker build -t docker  .

查看镜像的详细信息,运行命令:

docker images

运行镜像,执行命令:

docker run -p 8080:8080 -d docker

-p 表示端口映射,冒号左边为容器外的端口号(对外暴露),右边为容器内的端口号(项目的端口号),-d 表示后台运行,docker是命令 docker images结果中REPOSITORY的值

查看运行中的镜像,运行命令:

docker ps

END

docker 常用命令

# 列出本机所有容器,包括终止运行的容器
docker container ls --all
# 终止容器运行
docker container kill [containerID]
# 终止运行的容器文件,依然会占据硬盘空间,删除
docker container rm [containerID]

# 有了 Dockerfile 文件以后,就可以使用docker image build命令创建 image 文件了。
#-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。
docker image build -t koa-demo .
# 或者
docker image build -t koa-demo:0.0.1 .


# 前面的docker container run命令是新建容器,每运行一次,就会新建一个容器。同样的命令运行两次,就会生成两个一模一样的容器文件。如果希望重复使用容器
docker container start [containerID]

#前面的docker container kill命令终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号.
#docker container stop命令也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号。
#这两个信号的差别是,应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。
bash container stop [containerID]

# docker container logs命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令查看输出。
docker container logs [containerID]

#docker container exec命令用于进入一个正在运行的 docker 容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了。
docker container exec -it [containerID] /bin/bash

# 用于从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法
docker container cp [containID]:[/path/to/file] .
项目打包编译报错:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值