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之后,给别人交互的就是一个镜像即可