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。
- sonar-scanner-2.9.0.670在Docker容器中抛出java.lang.ExceptionInInitializerError
- 如何使用jenkinsci / jnlp-slave进行复杂的构build?
- 自动部署Docker图像,这是在PHP技术
- 一旦容器完成处理,如何自动停止虚拟机?
- 无法从Azure主机虚拟机外部访问Windows容器
- 连接到Microsoft Azure虚拟机中的Docker容器内的MySQL服务器
- 在Linux上的Azure Web应用程序中运行dotnet核心docker映像时没有find可执行的匹配命令“dotnet – / .. /。dll”
- 如何启用Docker容器的出站连接?
- 与–net部署在azure色不绑定
- 我是否需要使用SSH隧道来使用完整的CI / CDpipe道从Windows Server 2016部署Docker容器
- 如何加快有很多文件的Azure Web应用程序部署?