Lowterm: Anwendung aus dem Docker heraus starten

Hallo,

ich versuche grade, ein Docker-Image zu erzeugen. Die Dockerfile sieht etwa wie folgt aus:

FROM golang:alpine
RUN mkdir /app
COPY . /app
WORKDIR /app
RUN go build -o main . 
CMD ["/app/main"]

Das Image wird im Docker auch erzeugt

docker build -t go-app-img .
docker run -d -p 3333:3000 --name go-app-container go-app-img

und die Datei, in der eine einfache Ausgabe steht, wird im Browser auch gerendert und angezeigt. Das funktioniert aber nicht, wenn ich in meinem Programm ein Routing habe und ich eine andere (HTML)Datei aufrufen möchte.

Ist dieses Vorhaben aus dem Docker heraus überhaupt möglich? Kennt sich jemand mit diesem Vorgang aus?

Danke im Voraus

  1. Das funktioniert aber nicht, wenn ich in meinem Programm ein Routing habe und ich eine andere (HTML)Datei aufrufen möchte.

    1. Genau das was „nicht funktioniert“ zeigst Du nicht…

    2. Ganz wichtig: Wie äußert sich dieses „funktioniert aber nicht“?

    3. Das nicht gezeigte liefert womöglich debug-Ausgaben. Du nimmst Dir selbst die Chance, diese zu sehen.

    docker run -a=stdout -a=stderr -p 3333:3000 --name go-app-container go-app-img
    

    wäre also der erste Kandidat bei der Fehlersuche.

    1. Im Container selber gibt es keine Fehlermeldung. Das Routing in meinem Programm

      func viewHandler(w http.ResponseWriter, r *http.Request) {
          title := r.URL.Path[len("/view/"):]
          p, _ := loadPage(title)
          fmt.Fprintf(w, "<h1>%s</h1><div>%s</div>", p.Title, p.Body)
      }
      
      http.HandleFunc("/view/", viewHandler)
      

      läuft anscheinend nicht. Das einzige was ich im Browser erhalte, ist:

      Diese Seite funktioniert nicht
      localhost hat keine Daten gesendet.
      ERR_EMPTY_RESPONSE
      
      1. Im Container selber gibt es keine Fehlermeldung. Das Routing in meinem Programm

        func viewHandler(w http.ResponseWriter, r *http.Request) {
            title := r.URL.Path[len("/view/"):]
            p, _ := loadPage(title)
            fmt.Fprintf(w, "<h1>%s</h1><div>%s</div>", p.Title, p.Body)
        }
        
        http.HandleFunc("/view/", viewHandler)
        

        läuft anscheinend nicht. Das einzige was ich im Browser erhalte, ist:

        Diese Seite funktioniert nicht
        localhost hat keine Daten gesendet.
        ERR_EMPTY_RESPONSE
        

        Hm. Hast Du sowas?

        1. Genau. Ich arbeite grade mit einer Testdatei. So funktioniert alles einwandfrei. Ich versuche grade, ein paar Erfahrungen bezüglich des Containers zu sammeln und wollte aus meinem Testprogramm ein Image erzeugen und dieses zum laufen zu bringen.

          1. Hm. Hast Du sowas?

            Genau.

            Schlechte Nachricht: Ich bin da mit meinem Latein am Ende. Dennoch haben wir dank meiner Glaskugel einen Fortschritt: Du weißt jetzt, was Du auch woanders zeigen musst.