1 构建springboot项目
首先要搞一个springboot测试demo,这里面我们可以通过maven来获取工程的jar包,通过命令来启动jar包。
java -jar xxxx.jar
我把我自己生成springboot工程生成的jar包放到我的github上了,可以直接拿来用。
springboot工程测试demo的jar包
有了工程后,创建dockerfile文件
FROM java:8 COPY *.jar /app.jar CMD ["--server.port=8080"] EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"]
我们构建镜像
# 把打好的jar包和Dockerfile上传到linux
[root@iZ2zeg4ytp0whqtmxbsqiiZ idea]# ll
total 16140
-rw-r--r-- 1 root root 16519871 Aug 14 17:38 demo-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 122 Aug 14 17:38 Dockerfile
# 构建镜像,不要忘了最后有一个点
[root@iZ2zeg4ytp0whqtmxbsqiiZ idea]# docker build -t zhangpeng233:1.0 .
Sending build context to Docker daemon 16.52MB
Step 1/5 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
---> d23bdf5b1b1b
Step 2/5 : COPY *.jar /app.jar
---> d4de8837ebf9
Step 3/5 : CMD ["--server.port=8080"]
---> Running in e3abc66303f0
Removing intermediate container e3abc66303f0
---> 131bb3917fea
Step 4/5 : EXPOSE 8080
---> Running in fa2f25977db7
Removing intermediate container fa2f25977db7
---> d98147377951
Step 5/5 : ENTRYPOINT ["java", "-jar", "/app.jar"]
---> Running in e1885e23773b
Removing intermediate container e1885e23773b
---> afb6b5f28a32
Successfully built afb6b5f28a32
Successfully tagged xiaofan666:latest
# 查看镜像
[root@iZ2zeg4ytp0whqtmxbsqiiZ idea]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
REPOSITORY TAG IMAGE ID CREATED SIZE
xiaofan666 latest 14ba6781e4d7 35 seconds ago 660MB
zhangpeng233 1.0 14ba6781e4d7 35 seconds ago 660MB
tomcat latest fb5657adc892 2 weeks ago 680MB
mysql 5.7 c20987f18b13 3 weeks ago 448MB
centos latest 5d0da3dc9764 3 months ago 231MB
redis 5.0.9-alpine3.11 3661c84ee9d0 20 months ago 29.8MB
java 8 d23bdf5b1b1b 4 years ago 643MB
# 运行容器
[root@iZ2zeg4ytp0whqtmxbsqiiZ idea]# docker run -d -P --name zhangpeng-springboot-web zhangpeng233:1.0
fd9a353a80bfd61f6930c16cd92204532bfd734e003f3f9983b5128a27b0375e
# 查看运行起来的容器端口(因为我们启动的时候没有指定)
[root@iZ2zeg4ytp0whqtmxbsqiiZ idea]# docker ps
ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f796aea25cf zhangpeng233:1.0 "java -jar /app.jar …" 5 seconds ago Up 4 seconds 0.0.0.0:49159->8080/tcp, :::49159->8080/tcp zhangpeng-springboot-web
5403c5b14863 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 26 hours ago Up 26 hours 0.0.0.0:6376->6379/tcp, :::6376->6379/tcp, 0.0.0.0:16376->16379/tcp, :::16376->16379/tcp redis-6
cee733cd1128 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 26 hours ago Up 26 hours 0.0.0.0:6375->6379/tcp, :::6375->6379/tcp, 0.0.0.0:16375->16379/tcp, :::16375->16379/tcp redis-5
b096cefbed3f redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 26 hours ago Up 26 hours 0.0.0.0:6374->6379/tcp, :::6374->6379/tcp, 0.0.0.0:16374->16379/tcp, :::16374->16379/tcp redis-4
c3f4f5fff8ed redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 26 hours ago Up 26 hours 0.0.0.0:6373->6379/tcp, :::6373->6379/tcp, 0.0.0.0:16373->16379/tcp, :::16373->16379/tcp redis-3
00628a02d5cf redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 26 hours ago Up 26 hours 0.0.0.0:6372->6379/tcp, :::6372->6379/tcp, 0.0.0.0:16372->16379/tcp, :::16372->16379/tcp redis-2
7537a40922f6 redis:5.0.9-alpine3.11 "docker-entrypoint.s…" 26 hours ago Up 26 hours 0.0.0.0:6371->6379/tcp, :::6371->6379/tcp, 0.0.0.0:16371->16379/tcp, :::16371->16379/tcp redis-1
# 本地访问1
[root@iZ2zeg4ytp0whqtmxbsqiiZ idea]# curl localhost:49159
{"timestamp":"2020-08-14T09:42:57.371+00:00","status":404,"error":"Not Found","message":"","path":"/"}
# 本地访问2
[root@iZ2zeg4ytp0whqtmxbsqiiZ idea]# [root@iZ2zeg4ytp0whqtmxbsqiiZ idea]# curl localhost:49159/hello
zhang peng nb
# 远程访问(开启阿里云上的安全组哦)
以后我们使用了Docker之后,给别人交互的就是一个镜像即可



