【问题标题】:Openshift new-app not working for dockerfileOpenshift new-app 不适用于 dockerfile
【发布时间】:2020-08-20 03:48:38
【问题描述】:

我正在尝试使用 CLI 在 Openshift 中部署新应用。当我使用 GUI 并单击“从 docker 文件构建”时,一切正常。但是当我使用 CLI 时,它不会。

这些是我的仓库中的文件:

Dockerfile

FROM golang:1.11-alpine
RUN mkdir /app
COPY main.go /app
WORKDIR /app
RUN go build -o main .
EXPOSE 8080 8888
USER 1001
ENTRYPOINT ["/app/main"]

main.go

package main

import (
    "fmt"
    "net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "<h1>Hello OpenShift! Updated build</h1>")
}

func listenAndServe(port string) {
    fmt.Printf("serving on %s\n", port)
    err := http.ListenAndServe(":"+port, nil)
    if err != nil {
        panic("ListenAndServe: " + err.Error())
    }
}

func main() {
    http.HandleFunc("/", helloHandler)
    go listenAndServe("8080")
    select {}
}

我正在关注这个article。我已将文件复制到我的私人仓库并使用源密码进行克隆。就像那里提到的那样,我使用了命令和源秘密

oc new-app https://git.abcd.corp.mycompany.com/12345/openshift-trail.git#development --source-secret=my-secret --name=demo-blah

这给了我以下错误

error: unable to load template file "https://git.abcd.corp.mycompany.com/12345/openshift-trail.git#development": error parsing https://git.abcd.corp.mycompany.com/12345/openshift-trail.git#development: error converting YAML to JSON: yaml: line 3: mapping values are not allowed in this context
error: git ls-remote failed with: fatal: unable to access 'https://git.abcd.corp.mycompany.com/12345/openshift-trail.git/': Problem with the SSL CA cert (path? access rights?);  local file access failed with: stat https://git.abcd.corp.mycompany.com/12345/openshift-trail.git#development: no such file or directory
error: unable to locate any images in image streams, templates loaded in accessible projects, template files, local docker images with name "https://git.abcd.corp.mycompany.com/12345/openshift-trail.git#development"

Argument 'https://git.abcd.corp.mycompany.com/12345/openshift-trail.git#development' was classified as an image, image~source, or loaded template reference.

The 'oc new-app' command will match arguments to the following types:

  1. Images tagged into image streams in the current project or the 'openshift' project
     - if you don't specify a tag, we'll add ':latest'
  2. Images in the Docker Hub, on remote registries, or on the local Docker engine
  3. Templates in the current project or the 'openshift' project
  4. Git repository URLs or local paths that point to Git repositories

--allow-missing-images can be used to point to an image that does not exist yet.

根据openshift doco,它说如果 repo 中有 Dockerfile,它应该自动检测它。但是在这里我遇到了一个我无法理解的奇怪错误。非常感谢任何帮助。

【问题讨论】:

    标签: openshift openshift-origin


    【解决方案1】:

    后期发布...遇到同样的问题...尝试更改运行oc new-app 命令的目录。作为非特权用户,我从/root 运行命令。将位置更改为用户的 homedir 对我有用。

    【讨论】:

      【解决方案2】:

      您可以在自己的计算机上将其构建为常规 dockerfile 并将其上传到 Docker 注册表,然后将其从远程注册表部署到 openshift,或者您甚至可以将其推送到 openshift 上的内置注册表。

      我认为您正在寻找的命令可能是

      
          oc new-build
      
      

      这篇文章可能会有所帮助:

      https://dzone.com/articles/4-ways-to-build-applications-in-openshift-1

      【讨论】:

      • 感谢@OpenBSDNinja 的回答。我正在寻找一种使用oc new-app 使事情变得更容易的方法。此外,Opeshift doco 说它会识别 repo 中的 dockerfile,但对我来说它不起作用。但我想后备方式将是new-build
      猜你喜欢
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多