LinkedKeeper 部署 ACK
本篇文章,我们看一下如何基于阿里云K8S部署自己的应用。从整体部署来看,首先,阿里云提供了容器镜像服务,可用于我们应用基于容器化Dockerfile的镜像构建,其次,基于容器服务 - Kubernetess实现了容器化部署,整个过程如下图所示,不过其中还使用到了SLB、EIP、NAT、ECS、VPC、VSW等等,我们来一起看下。

First,我们通过阿里云容器服务 - Kubernetess创建一个K8S集群:

成功创建了K8S集群之后,如何把它做成Docker镜像?
步骤一:在Dockerfile中使用多阶段构建打包Java应用镜像
从Docker 17.05版本开始,使用docker build命令开始支持多阶段构建。
多阶段构建指在Dockerfile中使用多个FROM语句,每个FROM指令都可以使用不同的基础镜像,并且是一个独立的子构建阶段,多条FROM就是多阶段构建,虽然最后生成的镜像只能是最后一个阶段的结果,但是,能够将前置阶段中的文件拷贝到后边的阶段中,这就是多阶段构建的最大意义。最大的使用场景是将编译环境和运行环境分离,直接一个Dockerfile就可以解决。
什么是基础镜像?
- Docker镜像官网(Docker Hub): https://hub.docker.com
- 阿里云容器Hub:https://dev.aliyun.com
LinkedKeeper托管在Github上,通过阿里云容器镜像服务(ACR)的镜像构建服务,进行多阶段构建。
Second,开通阿里云容器镜像服务,绑定Github代码源,创建镜像仓库。

使用多阶段构建Dockerfile(multi-stage)
在LinkedKeeper Maven项目中新建Dockerfile文件,并在Dockerfile文件添加以下内容。
# First stage: complete build environment
FROM maven:3.5.0-jdk-8-alpine AS builder
# add pom.xml and source code
ADD ./pom.xml pom.xml
ADD ./linkedkeeper-web /linkedkeeper-web
ADD ./linkedkeeper-usercenter /linkedkeeper-usercenter
ADD ./linkedkeeper-service /linkedkeeper-service
ADD ./linkedkeeper-manager /linkedkeeper-manager
ADD ./linkedkeeper-dao /linkedkeeper-dao
ADD ./linkedkeeper-domain /linkedkeeper-domain
# package jar
RUN mvn clean package
# Second stage: minimal runtime environment
FROM openjdk:8-jre-alpine
FROM tomcat:8.5.32-jre8
# copy jar from the first stage
RUN rm -rf /usr/local/tomcat/webapps/*
COPY --from=builder /linkedkeeper-web/target/linkedkeeper-web-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
RUN mkdir -p /usr/local/tomcat/upload/temp/
EXPOSE 8080
# startup tomcat
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
说明:该Dockerfile文件使用了二阶段构建。
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content