SpringBoot in Docker

Docker这项容器技术已经是十分的火热了,读者要是不了解docker的话可以吧docker先理解为虚拟机。 
我们的Springboot最终是要部署在Linux上的,docker作为Linux轻量级的实现。docker也是可以用来部署Springboot应用的。 

1.创建Dockerfile 
创建一个文件名为Dockerfile的文件,复制以下内容到文件中

FROM java:8
VOLUME /tmp
ADD config-server-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

 其中config-server-0.0.1-SNAPSHOT.jar这个是我的springClould的一个配置中心微服务


SpringBoot in Docker
 2.创建docker镜像 

将创建好的Dockerfile文件和jar包上传到服务器,放在同一文件夹下,进入jar包所在文件夹,执行命令

 docker build -t xstz_config_server .

 xstz_config_server为生成的镜像名, .表示当前目录

 

docker build -t xstz_config_server .
Sending build context to Docker daemon 26.84 MB
Step 1 : FROM java:8
Trying to pull repository docker.io/library/java ...
8: Pulling from docker.io/library/java
5040bd298390: Pull complet
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
 ---> d23bdf5b1b1b
Step 2 : VOLUME /tmp
 ---> Running in 2c1948cd1181
 ---> 33092a5791af
Removing intermediate container 2c1948cd1181
Step 3 : ADD config-server-0.0.1-SNAPSHOT.jar app.jar
 ---> b2c41134d3f
Removing intermediate container 684002e93194
Step 4 : RUN sh -c 'touch /app.jar'
 ---> Running in 985f0fece3fd
 ---> b63eb40e4e50
Removing intermediate container 985f0fece3fd
Step 5 : ENV JAVA_OPTS ""
 --> Running in 327eb48ba1d6
 ---> d3c19e35c369
Removing intermediate container 327eb48ba1d6
Step 6 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
 ---> Running in eb0d88164ae7
 ---> 1ed548a8d199
Removing intermediate container eb0d88164ae7
Successfully built 1ed548a8d199
 

 

3.查看生成的镜像

 

docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
xstz_config_server   latest              1ed548a8d199        6 seconds ago       696.8 MB
docker.io/nginx      latest              8b89e48b5f15        5 days ago          109 MB
docker.io/registry   latest              b2b03e9146e1        2 weeks ago         33.29 
 

 

docker.io/java       8                   d23bdf5b1b1b        18 months ago       643.1 MB

4.创建容器并运行jar包

 

[[email protected] xstz_springclould]# docker run -d -p 8091:8091 xstz_config_server
e67579cb6f5bc60a11ca1441ba1ae220c9fdf2d772d1ff3d22d713614673c75e
[[email protected] xstz_springclould]#
 

 

-d表示在后台运行

-p 指定端口号 第一个8080 为 容器内部的端口号 第二个8080位外界访问的端口号,将容器内的8080端口号映射到外部的8080端口号

5.然后就可以通过外网ip+端口号访问项目

6.测试一下,从spring clould config 客户端启动项目,从config-server端读取配置文件,看是否可以成功

启动我本地的Config客户端,发下可以成功启动,成功从服务端读取配置文件


SpringBoot in Docker
 配置文件如下


SpringBoot in Docker