美文网首页
docker 部署项目的方式

docker 部署项目的方式

作者: long_c2b7 | 来源:发表于2021-01-18 10:36 被阅读0次

    1.1 将项目打包成jar

    1.2 .编写Dockerfile

    FROM java:8
    VOLUME /tmp
    ADD elk-web-1.0-SNAPSHOT.jar elk.jar
    EXPOSE 8080
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/elk.jar"]
    

    FROM:表示基础镜像,即运行环境
    VOLUME:/tmp创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
    ADD:拷贝文件并且重命名(ADD elk-web-1.0-SNAPSHOT.jar elk.jar 将应用jar包复制到/elk.jar)
    EXPOSE:并不是真正的发布端口,这个只是容器部署人员与建立image的人员之间的交流,即建立image的人员告诉容器布署人员容器应该映射哪个端口给外界
    ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

    1.3.构建容器

    [root@VM_0_15_centos elk]# docker build -t elk .
    Sending build context to Docker daemon 14.43 MB
    Step 1/5 : FROM java:8
    Trying to pull repository docker.io/library/java ... 
    8: Pulling from docker.io/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 docker.io/java:8
     ---> d23bdf5b1b1b
    Step 2/5 : VOLUME /tmp
     ---> Running in 0aec2dc2f98c
     ---> a52e844f25d4
    Removing intermediate container 0aec2dc2f98c
    Step 3/5 : ADD elk-web-1.0-SNAPSHOT.jar elk.jar
     ---> 3ba2f4fdddda
    Removing intermediate container 860a0f748a23
    Step 4/5 : EXPOSE 8080
     ---> Running in 1d3331cc2be6
     ---> e9ac33d26ce0
    Removing intermediate container 1d3331cc2be6
    Step 5/5 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /elk.jar
     ---> Running in d354f8ee2af5
     ---> 8937e1ade6c7
    Removing intermediate container d354f8ee2af5
    Successfully built 8937e1ade6c7` </pre>
    

    1.4.运行容器

    docker run -di --name 容器名称 -p 8080:8080 镜像名称

    其中-d表示后台运行容器,这也就自然地解决的Spring Boot不支持后台运行应用程序的问题。

    -p 8080:8080表示将容器内部的8080端口映射到宿主机器的8080端口,这样就可以通过宿主机器直接访问应
    用。

    --name 给容器取一个容易记住的名字方便日后管理。

    [root@VM_0_15_centos elk]# docker run -di --name myspringboot -p 8080:8080 8937e1ade6c7
    04d6b2c347950a10c95a039c94a3e51d717e516dd8c3c742e3197687dfcf5523
    [root@VM_0_15_centos elk]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    04d6b2c34795        8937e1ade6c7        "java -Djava.secur..."   8 seconds ago       Up 7 seconds        0.0.0.0:8080->8080/tcp   myspringboot
    

    1.5.查看运行日志

    > docker logs -f --tail=100 容器名称
     docker logs -f --tail=100 04d6b2c34795
      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v1.5.4.RELEASE)
    2019-12-29 07:42:58.982  INFO 1 --- [           main] c.b.ElkExampleSpringBootApplication      : Starting ElkExampleSpringBootApplication v1.0-SNAPSHOT on 04d6b2c34795 with PID 1 (/elk.jar started by root in /)
    2019-12-29 07:42:58.999  INFO 1 --
    

    1.6.访问测试

    相关文章

      网友评论

          本文标题:docker 部署项目的方式

          本文链接:https://www.haomeiwen.com/subject/oajwaktx.html