第一步:执行mvn package 命令打出jar包,然后解压jar包,把lib放到服务器合适的目录下面
<build> <finalName>demo</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.liekkas.DemoApplication</mainClass> <layout>ZIP</layout> <includes> <include> <groupId>nothing</groupId> <artifactId>nothing</artifactId> </include> </includes> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
执行mvn package 命令打出jar包,和lib的放在同一目录下
第三步:在服务器创建Dockerfile文件,并填入一下内容
#依赖镜像
FROM java:8-alpine
#把当前的hello.jar当如到容器中(目前为了方便放入更目录,可以自己选择)
ADD hello.jar /app.jar
#拷贝依赖jar到容器中
ADD lib/ /home/lib/
#拷贝启动脚本到容器中
COPY start.sh /start.sh
#给脚本添加执行权限
RUN chmod +x start.sh
#容器启动时执行脚本
ENTRYPOINT ./start.sh
#暴露服务端口
EXPOSE 8080
同目录下创建start.sh,并填入以下内容,这样容器启动的时候就会启动Springboot项目
echo ">>>>>> create log file"
cd /tmp
touch app.log
chmod 666 /tmp/app.log
echo ">>>>>> create log file success"
echo ">>>>>> project is starting"
java -Dloader.path=/home/lib -jar /app.jar >/tmp/app.log
echo ">>>>>> start success"
第三步:jar包和Dockerfile文件放在同一目录,把项目打成docker镜像,注意后面 有个小点不能少
docker build -t hello .
第四步:springboot项目打包成 docker镜像成功之后,这个时候执行下面的命令可以查看你的 镜像
docker images
第五步:启动容器
docker run -d -p 8080:8080 hello
第六步查看容器启动状态
docker ps -a
附录
进入容器命令
docker exec -it 容器Id /bin/sh
目前不清楚/bin/bash进不去,可能没有/bin/bash解释器
由于Dockerfile文件中的ADD命令是从本目录下寻找文件的,所以ADD 主机的文件只能在和Dockerfile文件的同一目录或者子目录
如果源路径是个文件,且目标路径是以 / 结尾, 则docker会把目标路径当作一个目录,会把源文件拷贝到该目录下。 如果目标路径不存在,则会自动创建目标路径。
2、如果源路径是个文件,且目标路径是不是以 / 结尾,则docker会把目标路径当作一个文件。 如果目标路径不存在,会以目标路径为名创建一个文件,内容同源文件; 如果目标文件是个存在的文件,会用源文件覆盖它,当然只是内容覆盖,文件名还是目标文件名。 如果目标文件实际是个存在的目录,则会源文件拷贝到该目录下。 注意,这种情况下,最好显示的以 / 结尾,以避免混淆。
3、如果源路径是个目录,且目标路径不存在,则docker会自动以目标路径创建一个目录,把源路径目录下的文件拷贝进来。 如果目标路径是个已经存在的目录,则docker会把源路径目录下的文件拷贝到该目录下。
4、如果源文件是个归档文件(压缩文件),则docker会自动帮解压。