$ oc new-app /<path to source code>
您可以使用 OpenShift Dedicated CLI 从包含源代码或二进制代码、镜像和模板的组件创建 OpenShift Dedicated 应用程序。
new-app
创建的对象集取决于作为输入传递的工件:源代码仓库、镜像或模板。
使用 new-app
命令,您可以从本地或远程 Git 仓库中的源代码创建应用程序。
new-app
命令创建一个构建配置,该配置本身会从您的源代码创建一个新的应用程序镜像。new-app
命令通常还会创建一个 Deployment
对象来部署新镜像,以及一个服务来提供对运行您的镜像的部署的负载均衡访问。
OpenShift Dedicated 会自动检测应该使用 pipeline、source 或 docker 构建策略,并且在 source 构建的情况下,会检测合适的语言构建器镜像。
要从本地目录中的 Git 仓库创建应用程序
$ oc new-app /<path to source code>
如果您使用本地 Git 仓库,则该仓库必须有一个名为 |
要从远程 Git 仓库创建应用程序
$ oc new-app https://github.com/sclorg/cakephp-ex
要从私有远程 Git 仓库创建应用程序
$ oc new-app https://github.com/youruser/yourprivaterepo --source-secret=yoursecret
如果您使用私有远程 Git 仓库,您可以使用 |
您可以通过指定 --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
OpenShift Dedicated 通过检测某些文件来自动确定要使用的构建策略
在创建新应用程序时,如果源代码仓库的根目录或指定的上下文目录中存在 Jenkinsfile,则 OpenShift Dedicated 将生成 pipeline 构建策略。
|
在创建新应用程序时,如果源代码仓库的根目录或指定的上下文目录中存在 Dockerfile,则 OpenShift Dedicated 将生成 docker 构建策略。
如果没有检测到 Jenkinsfile 或 Dockerfile,则 OpenShift Dedicated 将生成 source 构建策略。
通过将 --strategy
标志设置为 docker
、pipeline
或 source
来覆盖自动检测到的构建策略。
$ oc new-app /home/user/code/myapp --strategy=docker
|
如果您使用 source 构建策略,new-app
将尝试通过仓库的根目录或指定的上下文目录中某些文件的存在来确定要使用的语言构建器
语言 | 文件 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
检测到语言后,new-app
会在 OpenShift Dedicated 服务器上搜索具有与检测到的语言匹配的 supports
注解的镜像流标签,或名称与检测到的语言匹配的镜像流。如果找不到匹配项,new-app
会在 Docker Hub 注册表 中搜索名称与检测到的语言匹配的镜像。
您可以通过指定镜像(镜像流或容器规范)和带有 ~
分隔符的仓库来覆盖构建器对特定源代码仓库使用的镜像。请注意,如果这样做,则不会执行构建策略检测和语言检测。
例如,要将远程仓库中的源代码与 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 不可用,您可以使用
|
您可以从现有镜像部署应用程序。镜像可以来自 OpenShift Dedicated 服务器中的镜像流、特定注册表中的镜像或本地 Docker 服务器中的镜像。
new-app
命令尝试确定传递给它的参数中指定的镜像类型。但是,您可以使用 --docker-image
参数显式地告诉 new-app
镜像是容器镜像,或者使用 -i|--image-stream
参数显式地告诉 new-app
镜像是镜像流。
如果您指定来自本地 Docker 仓库的镜像,则必须确保 OpenShift Dedicated 集群节点上也可用相同的镜像。 |
您可以通过指定模板的名称作为参数,从先前存储的模板或模板文件创建应用程序。例如,您可以存储一个示例应用程序模板并使用它来创建应用程序。
将应用程序模板上传到您当前项目的模板库。以下示例从名为 examples/sample-app/application-template-stibuild.json
的文件上传应用程序模板
$ oc create -f examples/sample-app/application-template-stibuild.json
然后通过引用应用程序模板创建一个新的应用程序。在此示例中,模板名称为 ruby-helloworld-sample
$ oc new-app ruby-helloworld-sample
要通过引用本地文件系统中的模板文件(无需先将其存储在 OpenShift Dedicated 中)来创建一个新的应用程序,请使用 -f|--file
参数。例如
$ oc new-app -f examples/sample-app/application-template-stibuild.json
基于模板创建应用程序时,使用 -p|--param
参数设置模板定义的参数值
$ oc new-app ruby-helloworld-sample \
-p ADMIN_USERNAME=admin -p ADMIN_PASSWORD=mypassword
您可以将参数存储在文件中,然后在实例化模板时使用 --param-file
使用该文件。如果要从标准输入读取参数,请使用 --param-file=-
。以下是一个名为 helloworld.params
的示例文件
ADMIN_USERNAME=admin
ADMIN_PASSWORD=mypassword
在实例化模板时引用文件中的参数
$ oc new-app ruby-helloworld-sample --param-file=helloworld.params
new-app
命令生成 OpenShift Dedicated 对象,这些对象构建、部署和运行创建的应用程序。通常,这些对象是在当前项目中创建的,并分配从输入源代码仓库或输入镜像派生的名称。但是,使用 new-app
,您可以修改此行为。
对象 | 描述 |
---|---|
|
为命令行中指定的每个源代码仓库创建一个 |
|
对于 |
|
创建 |
|
|
其他 |
根据模板,在实例化模板时可以生成其他对象。 |
从模板、源代码或镜像生成应用程序时,可以使用 -e|--env
参数在运行时将环境变量传递给应用程序容器
$ oc new-app openshift/postgresql-92-centos7 \
-e POSTGRESQL_USER=user \
-e POSTGRESQL_DATABASE=db \
-e POSTGRESQL_PASSWORD=password
也可以使用 --env-file
参数从文件中读取变量。以下是一个名为 postgresql.env
的示例文件
POSTGRESQL_USER=user
POSTGRESQL_DATABASE=db
POSTGRESQL_PASSWORD=password
从文件中读取变量
$ oc new-app openshift/postgresql-92-centos7 --env-file=postgresql.env
此外,可以通过使用 --env-file=-
从标准输入提供环境变量。
$ cat postgresql.env | oc new-app openshift/postgresql-92-centos7 --env-file=-
作为 |
从模板、源代码或镜像生成应用程序时,可以使用 --build-env
参数在运行时将环境变量传递给构建容器
$ oc new-app openshift/ruby-23-centos7 \
--build-env HTTP_PROXY=http://myproxy.net:1337/ \
--build-env GEM_HOME=~/.gem
也可以使用 --build-env-file
参数从文件中读取变量。以下是一个名为 ruby.env
的示例文件
HTTP_PROXY=http://myproxy.net:1337/
GEM_HOME=~/.gem
从文件中读取变量
$ oc new-app openshift/ruby-23-centos7 --build-env-file=ruby.env
此外,可以通过使用 --build-env-file=-
从标准输入提供环境变量。
$ cat ruby.env | oc new-app openshift/ruby-23-centos7 --build-env-file=-
从源代码、镜像或模板生成应用程序时,可以使用-l|--label
参数为创建的对象添加标签。标签使您可以轻松地集体选择、配置和删除与应用程序关联的对象。
$ oc new-app https://github.com/openshift/ruby-hello-world -l name=hello-world
要查看运行new-app
命令的预演,可以使用带有yaml
或json
值的-o|--output
参数。然后,您可以使用输出预览创建的对象,或将其重定向到您可以编辑的文件。满意后,您可以使用oc create
创建OpenShift Dedicated对象。
要将new-app
工件输出到文件,请运行以下命令:
$ oc new-app https://github.com/openshift/ruby-hello-world \
-o yaml > myapp.yaml
编辑文件
$ vi myapp.yaml
通过引用文件创建一个新的应用程序
$ oc create -f myapp.yaml
new-app
创建的对象通常以源代码库或用于生成它们的镜像命名。您可以通过向命令添加--name
标志来设置生成的对象的名称。
$ oc new-app https://github.com/openshift/ruby-hello-world --name=myapp
通常情况下,new-app
会在当前项目中创建对象。但是,您可以使用-n|--namespace
参数在不同的项目中创建对象。
$ oc new-app https://github.com/openshift/ruby-hello-world -n myproject
new-app
命令允许通过指定多个参数来创建多个应用程序。命令行中指定的标签适用于单个命令创建的所有对象。环境变量适用于从源代码或镜像创建的所有组件。
要从源代码库和Docker Hub镜像创建应用程序,请执行以下操作:
$ oc new-app https://github.com/openshift/ruby-hello-world mysql
如果源代码库和构建器镜像作为单独的参数指定,则 |
new-app
命令允许将多个镜像一起部署到单个Pod中。要指定要一起分组的镜像,请使用+
分隔符。--group
命令行参数也可用于指定应一起分组的镜像。要将从源代码库构建的镜像与其他镜像分组,请在组中指定其构建器镜像。
$ oc new-app ruby+mysql
要将从源代码构建的镜像和外部镜像一起部署,请执行以下操作:
$ oc new-app \
ruby~https://github.com/openshift/ruby-hello-world \
mysql \
--group=ruby+mysql
要搜索oc new-app
命令的镜像、模板和其他输入,请添加--search
和--list
标志。例如,要查找所有包含PHP的镜像或模板:
$ oc new-app --search php
要使用oc new-app
设置导入模式,请添加--import-mode
标志。此标志可以附加Legacy
或PreserveOriginal
,分别为用户提供使用单个子清单或所有清单创建镜像流的选项。
$ oc new-app --image=registry.redhat.io/ubi8/httpd-24:latest --import-mode=Legacy --name=test
$ oc new-app --image=registry.redhat.io/ubi8/httpd-24:latest --import-mode=PreserveOriginal --name=test