Docker中的Golang Hello World Web App返回404

时间:2018-06-22 21:36:39

标签: docker go

我正在尝试运行一个简单的“ Hello world” Golang http应用。它运行在端口6258上。我在Debian 9 Docker容器中运行它。当我尝试在Chrome上通过localhost:6258访问它时,它只是一个空白页。我花了数小时试图弄清楚这一点。我读过的所有内容都表明这应该可行,但事实并非如此。我不知道了,但是我显然做错了什么。这是我所做的一切:

我使用以下命令下载了最新的Docker Debian 9映像:

docker pull debian:latest

我创建了一个Dockerfile来公开端口并设置环境。

Dockerfile:

FROM debian:latest

RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get -y install sudo coreutils less vim man wget curl procps ca-certificates gnupg software-properties-common unzip libssl-dev libpcre3-dev gcc make zlib1g-dev net-tools
RUN curl -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
RUN tar xvf go1.10.3.linux-amd64.tar.gz
RUN sudo chown -R root:root ./go
RUN sudo mv go /usr/local
RUN echo 'export GOPATH=$HOME/work' >> /etc/profile
RUN echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> /etc/profile
RUN mkdir -p $HOME/work/src/hello-world/test

EXPOSE 6258

我通过运行以下命令使用Dockerfile创建了一个映像:

docker build -t testuser/testname:testtag .

我通过运行以下命令从该图像中创建了一个容器:

docker run -p 6258:6258 -i -t 939e7900be22  /bin/bash

我运行了此命令以完成Go安装(如果我将其包含在Dockerfile中似乎无法正常工作):

source /etc/profile

我自己创建了应用(vim $HOME/work/src/hello-world/test/main.go):

main.go:

package main
import (
  "fmt"
  "net/http"
)
func helloWorld(w http.ResponseWriter, r *http.Request) {
  fmt.Fprintf(w, "Hello World")
}
func main() {
  http.HandleFunc("/", helloWorld)
  http.ListenAndServe(":6258", nil)
}

我通过以下方式运行该应用程序:

go run src/hello-world/test/main.go

当我在Chrome中访问localhost:6258时,没有显示“ Hello World”,而是一个空白页面。 Chrome检查器显示0字节,控制台显示“无法加载资源:服务器响应状态为404(未找到)”。

telnet可以连接到localhost:6258。冰壶确认404:

curl localhost:6258 --verbose
* Rebuilt URL to: localhost:6258/
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 6258 (#0)
> GET / HTTP/1.1
> Host: localhost:6258
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Date: Fri, 22 Jun 2018 19:44:11 GMT
< Accept-Ranges: bytes
< Content-Length: 0
<
* Connection #0 to host localhost left intact

我花了一个小时来搜索,但是还没有发现任何帮助。我没主意了。我对Docker不太满意,这是我第一次尝试使用Go,因此,如果我错过了明显的东西,我不会感到惊讶。任何帮助/建议,将不胜感激。谢谢!

0 个答案:

没有答案