一键部署Docker镜像到SAP CloudFoundry
阅读这篇blog大约需要5分钟
Docker 是世界领先的软件容器平台。DockerHub 是一个由 Docker 公司运行和管理的基于云的存储库。它是一个在线存储库,Docker 镜像可以由其他用户发布和使用。
CloudFoundry是一个提供夸平台、多语言应用框架的开源PaaS,可运行于私有云和公有云。
Docker + CloudFoundry也是完美的组合。对于一些复杂的环境,把镜像部署到云上是非常常见的需求。今天快速体验一下通过一键部署docker镜像到云平台。整个过程非常简单方便。
Any problem in computer science can be solved with another layer of indirection. But that usually will create another problem. --David Wheeler
介绍
主要是下面这些步骤:
- 本地创建Docker镜像
- 测试运行Docker容器
- 上传代码到github
- 在dockerhub上自动创建镜像
- 一键部署到CloudFoundry
- 测试运行
提前准备
-
免费注册Github账号
-
本地安装Docker
-
免费注册dockerhub账号
-
免费注册SAP云平台账号
本地创建Docker镜像
- node.js应用
创建一个node.js express应用,代码略。
- 测试运行
npm start
- 创建Dockerfile
这里和之前的例子差不多,可以参见:
Node.js学习笔记9-将Node应用部署到Docker
Dockerfile:
FROM node:latest
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD [ "node", "server.js" ]
- .dockerignore文件
node_modules
npm-debug.log
指定这些文件就不用拷贝了。
测试运行Docker容器
1.创建镜像
docker build -t rangwei/dkapp01 .
2.运行容器
docker run -p 3000:3000 -d rangwei/dkapp01
3.本地浏览器测试
一切OK,没有问题。
上传代码到github
https://github.com/rangwei/dock01
在dockerhub上自动创建镜像
-
登录到dockerhub
-
把dockerhub和github账户关联
-
通过dock01的代码自动创建编译镜像
-
选择create repository
-
输入名称dock01
-
选择github--dock01:
如下图所示:
-
选择Create&Build,开始build:
-
过一会儿即可看到编译成功:
一键部署到CloudFoundry
通过cf push一键部署:
cf push mydockerapp --docker-image rangwei/dock01:latest
输出:
Pushing app mydockerapp to org P200156789trial_trial / space dev as [email protected]...
Getting app info...
Creating app with these attributes...
+ name: mydockerapp
+ docker image: rangwei/dock01:latest
routes:
+ mydockerapp.cfapps.eu10.hana.ondemand.com
Creating app mydockerapp...
Mapping routes...
Staging app and tracing logs...
Cell 9a366102-e83e-4812-a660-bb95979125bc creating container for instance 487999a7-f6dd-43e3-b9b0-4805b653e765
Cell 9a366102-e83e-4812-a660-bb95979125bc successfully created container for instance 487999a7-f6dd-43e3-b9b0-4805b653e765
Staging...
Staging process started ...
Staging process finished
Exit status 0
Staging Complete
Cell 9a366102-e83e-4812-a660-bb95979125bc stopping instance 487999a7-f6dd-43e3-b9b0-4805b653e765
Cell 9a366102-e83e-4812-a660-bb95979125bc destroying container for instance 487999a7-f6dd-43e3-b9b0-4805b653e765
Cell 9a366102-e83e-4812-a660-bb95979125bc successfully destroyed container for instance 487999a7-f6dd-43e3-b9b0-4805b653e765
Waiting for app to start...
name: mydockerapp
requested state: started
isolation segment: trial
routes: mydockerapp.cfapps.eu10.hana.ondemand.com
last uploaded: Sun 09 Feb 12:41:19 CST 2020
stack:
docker image: rangwei/dock01:latest
type: web
instances: 1/1
memory usage: 1024M
start command: docker-entrypoint.sh node server.js
state since cpu memory disk details
#0 running 2020-02-09T04:42:05Z 0.0% 0 of 1G 0 of 1G
你也可以加上一个参数,指定随机路由。例如:
cf push mydockerapp --docker-image rangwei/dock01:latest --random-route
测试运行
打开浏览器访问应用:
- mydockerapp.cfapps.eu10.hana.ondemand.com
小结
麻雀虽小,五脏俱全。通过这个简单的小例子,把一个容器部署到SAP云平台Cloud Foundry非常方便。
项目代码
参考阅读
-
https://blogs.sap.com/2017/11/04/deploy-a-container-to-sap-cloud-platform-cf-using-docker-hub-and-github/
-
https://blogs.sap.com/2017/09/08/push-docker-image-to-sap-cloud-platform-cloud-foundry-landscape/