当您拥有Docker主机时,使用Docker很容易。您将Docker客户端与Docker主机(引擎)连接起来。然后,在Jenkins构建服务器上构建和部署(复杂)docker映像的过程类似于以下一系列命令:
Openshift Starter可以这样工作吗?答案:是的,此容器即服务(CAAS)选项是可能的。
在下面的步骤中,我创建一个由2个图像组成的项目:MySql和由Wildfly服务器托管的SpringBoot / Angular / Hibernate。当然,这也适用于Spring Boot JAR应用程序。
您从本地运行的Docker守护程序开始。我是通过Docker Quickstart Terminal执行此操作的。我仅将minishift用于本地测试- 在这种情况下不使用。
步骤1 :创建一个项目和1个MySql应用程序。
无需docker即可通过Openshift Web控制台完成此操作。您也可以使用oc new-proect命令。
步骤2 :登录openshift项目。在在线控制台中,单击顶部栏(右侧)上的问号。选择“命令行工具”。您可以通过右侧的图标将登录命令复制到剪贴板。
$ oc login等…(第一个剪贴板图标,粘贴整个命令)。
步骤3 :登录到您的Docker注册表。在这种情况下,请检查openshift在线控制台。
$ docker login -uoc whoami -poc whoami --show-tokenregistry.pro-us- east-1.openshift.com
oc whoami
oc whoami --show-token
注意:请勿将端口号用作后缀openshift:443!
步骤4: 在本地或在构建服务器上(使用Jenkins)构建并标记映像。
$ mvn clean install-创建war文件。您可以将其称为“ ROOT.war”。
$ docker build -t myproject / mynewapplication:latest。
$ docker标签myproject / mynewapplication Registry.pro-us- east-1.openshift.com/myproject/mynewapplication
如果您输入的名称不正确,一会儿您将无法推送图像。所以不要(!)写pro-us-east1。它是pro-us-east-1,等等。
Dockerfile位于Maven项目文件夹中。dockerfile可能看起来像:
FROM jboss/wildfly COPY target/ROOT.war /opt/jboss/wildfly/standalone/deployments/ # CMD - use the default wildfly default start command
内存效率更高的方法是:
FROM openjdk:8-jdk-alpine ENV JAVA_APP_JAR your.jar ENV AB_OFF true EXPOSE 8080 ADD target/$JAVA_APP_JAR /deployments/ CMD ["java","-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-jar","/deployments/your.jar"]
最后的设置将极大地改善/平衡您的内存使用情况。就我而言,将运行中的容器从600MB +减少到大约300MB可以正常运行!
步骤5 :将映像推送到内部Openshift存储库
$ docker push Registry.pro-us-east-1.openshift.com/myproject/mynewapplication
步骤6-A.1 :通过new-app命令从现有docker映像创建应用程序。仅在创建应用程序时第一次执行此操作。
$ oc new-app mynewapplication
->在“ mynewapplication”标签的“ latest”标签下的“ myproject / mynewapplication”图像流中找到图像1233123223(大约一个小时) ...此映像将部署在部署配置“ mynewapplication”中 ->创建资源... 创建了deploymentconfig“ mynewapplication” 服务“ mynewapplication”已创建 ->成功 运行“ oc status”以查看您的应用。
步骤6-A.2 :有关初始化设置,请参见下文。部署应用程序/ Web服务器时,创建一个“路由”,以便客户端可以访问该应用程序。由于必须执行一次,因此通过控制台(应用程序>路由)进行设置是一个很好的选择。示例:使用标准证书使您的网站仅可用于https:(1)使用目标端口8080(运行HTTP服务器的位置),(2)选中“安全路由”选项,(3)保持TLS终止为Edge。(4)对于不安全的流量,请选择“重定向”选项并…创建您的路线。稍等片刻,您就有一个HTTPS站点。
步骤6-B :更新图像时:推送现有图像时,将不会自动重新部署。您可以通过在线控制台或通过以下命令开始新的部署:
$ oc推出最新dc / mynewapplication -n myproject
要检查部署结果:
$ oc状态
要检查例如MySql容器是否正在运行:
$ oc获取豆荚
获取Mysql容器的名称。
$ oc rsh容器名称
然后,您将看到您是否真的可以访问数据库。
备注 :使用Openshift Starter / Original的 备注 :很高兴Openshift允许我们尝试免费的Starter版本。当然,对资源的使用有一系列限制。注意将“部署”策略设置为“重新创建”。“滚动”策略当然更好,但会消耗更多资源。我将MySql映像的资源大小通常设置为420Mi,而Wildfly映像的资源大小设置为600Mi。欢迎提出建议!
您可以登录OpenShift的内部图像注册表,然后将图像直接推送到其中。您需要先标记图像,使其与推送图像的项目名称匹配。有关更多详细信息,请参见:
一旦推送到内部映像注册表,您就可以使用oc new-app或Web控制台从该映像进行部署。
oc new-app