Docker——Python和Java微服务使用 Dockerfile 打包成镜像发布上线

微服务打包Docker镜像

  • Python微服务打包Docker镜像
  • SpringBoot微服务打包Docker镜像

Python微服务打包Docker镜像

  1. 编写app.py

    mkdir ~/python
    cd ~/python
    vim app.py
    
    #!/usr/bin/python3
    from werkzeug.serving import make_server
    def demo_app(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')])
    return ['hello xiaotian'.encode('utf8')]  # 浏览器显示的内容
    
    
    if __name__ == '__main__':
    httpd = make_server('0.0.0.0', 8080, demo_app)
    sa = httpd.socket.getsockname()
    print("Serving HTTP on", sa[0], "port", sa[1], "...")
    
    httpd.serve_forever()  # 服务器在后台一直运行
    
    

    还有写一个模块文件

    vim requirements.txt
    
    werkzeug
    
  2. 编写dockerfile

    FROM python
    MAINTAINER xiaotian<[email protected]>
    
    COPY requirements.txt /app/requirements.txt
    COPY app.py /app/app.py
    
    WORKDIR /app
    
    RUN pip install -r ./requirements.txt
    
    EXPOSE 8080
    
    CMD ["python3","/app/app.py"]
    

    对于Dockerfile不熟悉的同学可用参考:
    Dockerfile

  3. 构建镜像

    docker build -t pythonapp .
    
    查看
    docker images
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    pythonapp      latest    72e2bbddc994   16 minutes ago   893MB
    
  4. 开启容器

    docker run -d -p 8080:8080 --name xiaotian pythonapp
    
  5. 发布运行

    后台自动运行
    docker ps
    CONTAINER ID   IMAGE     COMMAND                 CREATED          STATUS          PORTS                                      
    NAMES29cf7f100a55   pythonapp   "python3 /app/app.py"   46 seconds ago   Up 45 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp  
     xiaotian
    
    测试
    [root@docker python]# curl localhost:8080
    hello xiaotian
    

Docker——Python和Java微服务使用 Dockerfile 打包成镜像发布上线_第1张图片

SpringBoot微服务打包Docker镜像

  1. 构架springboot项目

    package xiaotian.app.tian;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class helloxiaotian {
           
    
    @RequestMapping("/hello")
    public String Hello(){
           
        return "hello xiaotian";
    }
    

}

Docker——Python和Java微服务使用 Dockerfile 打包成镜像发布上线_第2张图片

测试
Docker——Python和Java微服务使用 Dockerfile 打包成镜像发布上线_第3张图片

  1. 打包应用
    Docker——Python和Java微服务使用 Dockerfile 打包成镜像发布上线_第4张图片
    Docker——Python和Java微服务使用 Dockerfile 打包成镜像发布上线_第5张图片
    测试
    在CMD里运行jar包
    java -jar app-0.0.1-SNAPSHOT.jar
    在这里插入图片描述

    在这里插入图片描述

  2. 编写dockerfile

    mkdir java
    cd java/
    上传jar包
    
    vim Dockerfile
    
    FROM java:8
    MAINTAINER xiaotian<[email protected]>
    
    COPY *.jar /app.jar
    
    CMD ["--server.port=8080"]
    
    EXPOSE 8080
    
    ENTRYPOINT ["java","-jar","/app.jar"]
    
    [root@docker java]# ls
    app-0.0.1-SNAPSHOT.jar  Dockerfile
    
  3. 构建镜像

    [root@docker java]# docker build -t javaapp .
    Sending build context to Docker daemon  16.57MB
    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
     ---> fe9445aff5f5
    Step 3/5 : CMD ["--server.port=8080"]
     ---> Running in 7822b686cc94
    Removing intermediate container 7822b686cc94
     ---> 4e1c3095eccb
    Step 4/5 : EXPOSE 8080
     ---> Running in c83a1bf2143c
    Removing intermediate container c83a1bf2143c
     ---> 1bc1901772eb
    Step 5/5 : ENTRYPOINT ["java","-jar","/app.jar"]
     ---> Running in b65c74eeb26e
    Removing intermediate container b65c74eeb26e
     ---> 34bbac318580
    Successfully built 34bbac318580
    Successfully tagged javaapp:latest
    
    查看镜像
    [root@docker java]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    javaapp      latest    34bbac318580   54 seconds ago   660MB
    python3      latest    72e2bbddc994   55 minutes ago   893MB
    
  4. 发布运行

    docker run -d -P --name xiaotian-springboot-web javaapp
    
    [root@docker java]# docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     
       NAMES
    0ece0817ea1b   javaapp   "java -jar /app.jar …"   11 seconds ago   Up 10 seconds   0.0.0.0:4
    9154->8080/tcp, :::49154->8080/tcp   xiaotian-springboot-web
    
    curl localhost:49154/hello
    hello xiaotian
    

Docker——Python和Java微服务使用 Dockerfile 打包成镜像发布上线_第6张图片
大功告成!

你可能感兴趣的:(Docker,docker,python,java,jar,dockerfile)