首先准备好springboot 的jar包
我做了一个访问计数的
private static Integer COUNT = 0;
@org.springframework.web.bind.annotation.ResponseBody
@org.springframework.web.bind.annotation.GetMapping("/count")
public String count(){
return "Visiting: " + (COUNT++);
}
mvn clean package # pom.xml -> <finalName>count</finalName>
打包放在target下的 count.jar
编辑Dockerfile:
FROM java:8
#拷贝当前target目录下的count.jar 到 container的根目录下
ADD ./target/count.jar count.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","count.jar"]
bin boot count.jar dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
然后你就可以通过8080端口访问了,每访问一次计数加一
过程遇见的问题:
第一次参考网上用ENTRYPOINT [“sh”,"-c", "java","-jar","count.jar"] 无法用,提示
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
-server to select the "server" VM
xxxxxx
感觉是java 命令有问题,后来改成下面这样才可以用
ENTRYPOINT ["java","-jar","count.jar"]
用到的相关命令:
docker build -f countDockerfile -t java:count .
-f 指示具体Dockerfile 位置, 默认为 当前目录下名为 Dockerfile 的文件
-t Name and optionally a tag in the 'name:tag' format
最后的那个 点号 . 表示镜像构建的上下文的路径,而非 Dockerfile所在的目录
docker run --name count -p 8080:8080 -d count
--name 容器名
-p 端口影射
-d 后台运行
docker image ls
docker container ls -a
docker image rm xxxx
docker rm xxxx
docker logs -f --tail=1000 count
-f 实时log