Docker容器在Azure WebApps for Linux上无法正常工作,但是它在本地工作。

对于docker,我有一个Azure Web应用程序(Linux预览版)的问题。

我通过go lang写了一个代理服务器,并通过Dockerfile打包。 这个问题只是简单的将jpeg转换成png格式。 它在当地正常工作。

package main import ( "net/http" "github.com/labstack/echo" "io" "image" "image/jpeg" "image/png" "log" ) func main() { e := echo.New() e.GET("/convertedimage", func(c echo.Context) error { source := c.QueryParam("url") log.Printf(source) response, err := http.Get(source) if err != nil { panic(err) } defer response.Body.Close() log.Printf(response.Header.Get("Content-type")); if response.Header.Get("Content-type") == "image/jpeg" { jpegImage := ImageRead(response.Body) pr, pw := io.Pipe() go func() { err = png.Encode(pw, jpegImage) pw.Close() }() return c.Stream(http.StatusOK, "image/png", pr) } else { return c.Stream(http.StatusOK, "image/png", response.Body) } }) e.Logger.Fatal(e.Start(":80")) } func ImageRead(inputImage io.ReadCloser) (image image.Image) { img, err := jpeg.Decode(inputImage) if err != nil { log.Fatal(err) } inputImage.Close() return img } 

另外我通过这样的Docker文件打包。

 FROM golang:1.7.5 ADD server.go . RUN go get -u github.com/labstack/echo RUN go build server.go ENTRYPOINT ./server EXPOSE 80 

但是,当我将其部署在Azure Web应用程序(Linux预览版)上时,它不起作用。

 $ go build server.go $ docker build . -t tsuyoshiushio/imageconvertproxy $ docker push tsuyoshiushio/imageconvertproxy $ docker run -p 8093:80 tsuyoshiushio/imageconvertproxy 

它可以很好地通过这样的浏览器调用。

 http://img.gdocker.com/linux/convertedimageurl=httpsc.s-microsoft.comja-jpCMSImagesspk-ushio.jpg%3Fversion%3Df6328834-736f-4b59-2f85-7b198346ef4d -> (I can see a png image on my browser.) 

Howerver,如果我将其部署在Azurenetworking应用程序上,则完全不起作用。

 http://img.gdocker.com/linux/convertedimageurl=httpsc.s-microsoft.comja-jpCMSImagesspk-ushio.jpg%3Fversion%3Df6328834-736f-4b59-2f85-7b198346ef4d -> {"message":"Not Found"} 

这与worng url是一样的行为。 但docker集装箱本身是成功的工作。

现在我们不能“docker执行者或dockerlogin的Web应用程序的容器,我不知道要解决这个问题。 你有什么想法来解决这个问题吗?

您的容器显示端口8093,但默认情况下,App Service使用端口80.幸运的是,此设置是可configuration的。

进入应用程序设置并添加一个名为PORT的设置并将其设置为8093.更多信息请参考此链接 。

更新:

我注意到,您通过使用https访问您的网站,端口是443,而不是80.尝试使用http并再次testing。