2.2.2. 使用 CLI 创建应用程序


2.2.2.1. 从源代码创建应用程序

您可以使用 new-app 命令从本地或远程 Git 存储库中的源代码创建应用程序。

使用本地目录中的 Git 存储库创建应用程序:

$ oc new-app /path/to/source/code
注意

如果使用本地 Git 存储库,该存储库应具有一个名为 origin 的远程源,指向 OpenShift Container Platform 集群可访问的 URL。如果没有 recognized remote,new-app 将创建一个 二进制构建

使用远程 Git 存储库创建应用程序:

$ oc new-app https://github.com/sclorg/cakephp-ex

使用私有远程 Git 存储库创建应用程序:

$ oc new-app https://github.com/youruser/yourprivaterepo --source-secret=yoursecret
注意

如果使用私有远程 Git 存储库,您可以使用 --source-secret 标志指定一个现有的 source clone secret,该 secret 将注入到 BuildConfig 中以访问存储库。

您可以通过指定 --context-dir 标志来使用源代码存储库的子目录。使用远程 Git 存储库和上下文子目录创建应用程序:

$ oc new-app https://github.com/sclorg/s2i-ruby-container.git \
    --context-dir=2.0/test/puma-test-app

另外,在指定远程 URL 时,您可以通过在 URL 末尾附加 #<branch_name> 来指定要使用的 Git 分支:

$ oc new-app https://github.com/openshift/ruby-hello-world.git#beta4

new-app 命令将创建一个构建配置,它本身会从您的源代码中创建一个新的应用程序镜像new-app 命令通常还会创建用于部署新镜像的部署配置,以及为运行您的镜像的部署提供负载均衡访问的服务

OpenShift Container Platform 会自动 检测 是否应使用 DockerPipelineSource 构建策略,如果进行 Source 构建,则 检测相应的语言构建器镜像

构建策略检测

在创建新应用程序时,如果源存储库的根目录或指定上下文目录中存在 Jenkinsfile,则 OpenShift Container Platform 会生成 Pipeline 构建策略。否则,如果找到 Dockerfile,OpenShift Container Platform 会生成 Docker 构建策略。否则,它会生成 Source 构建策略

您可以通过将 --strategy 标志设置为 dockerpipelinesource 来覆盖构建策略。

$ oc new-app /home/user/code/myapp --strategy=docker
注意

oc 命令要求包含构建源的文件在远程 Git 存储库中可用。对于所有 Source 构建,您必须使用 git remote -v

语言检测

如果使用 Source 构建策略,new-app 会尝试根据存储库根目录或指定上下文目录中是否存在特定文件来确定要使用的语言构建器:

表 2.1. new-app 检测的语言
语言文件

dotnet

project.json, *.csproj

jee

pom.xml

nodejs

app.json, package.json

perl

cpanfile, index.pl

php

composer.json, index.php

python

requirements.txt, setup.py

ruby

Gemfile, Rakefile, config.ru

scala

build.sbt

golang

Godeps, main.go

检测了语言后,new-app 会在 OpenShift Container Platform 服务器上搜索具有与所检测语言匹配的支持注解的镜像流标签,或与所检测语言名称匹配 的镜像流。如果找不到匹配项,new-app 会在 Docker Hub registry 中搜索名称上与所检测语言匹配的镜像。

您可以通过指定镜像(镜像流或容器规格)和存储库(以 ~ 作为分隔符),来覆盖构建器用于特定源存储库的镜像。请注意,如果这样做,不会执行 构建策略检测语言检测

例如,将 myproject/my-ruby 镜像流与远程存储库中的源一起使用:

$ oc new-app myproject/my-ruby~https://github.com/openshift/ruby-hello-world.git

使用 openshift/ruby-20-centos7:latest 容器镜像流以及本地仓库中的源:

$ oc new-app openshift/ruby-20-centos7:latest~/home/user/code/my-ruby-app
注意

语言检测需要在本地安装 Git 客户端,以便克隆并检查您的存储库。如果 Git 不可用,您可以使用 <image>~<repository> 语法指定要与存储库搭配使用的构建器镜像,以避免语言检测步骤。

调用 -i <image> <repository> 要求 new-app 尝试克隆 repository,从而能判断其工件类型;如果 Git 不可用,此操作会失败。

使用 -i <image> --code <repository> 要求 new-app 克隆 repository,从而能判断 image 应用作源代码的构建器,还是另外部署(使用数据库镜像时)。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.