5分钟将Docker镜像部署到SAP云平台CloudFoundry

一键部署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

介绍

主要是下面这些步骤:

  1. 本地创建Docker镜像
  2. 测试运行Docker容器
  3. 上传代码到github
  4. 在dockerhub上自动创建镜像
  5. 一键部署到CloudFoundry
  6. 测试运行

提前准备

本地创建Docker镜像

  1. node.js应用

创建一个node.js express应用,代码略。

  1. 测试运行
npm start
  1. 创建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" ]
  1. .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的代码自动创建编译镜像

  1. 选择create repository

  2. 输入名称dock01

  3. 选择github--dock01:
    如下图所示:
    在这里插入图片描述

  4. 选择Create&Build,开始build:
    在这里插入图片描述

  5. 过一会儿即可看到编译成功:
    在这里插入图片描述

一键部署到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/

发布了269 篇原创文章 · 获赞 65 · 访问量 103万+

猜你喜欢

转载自blog.csdn.net/starshus/article/details/104233764
今日推荐