私は最後の時間にこれを理解しようとしていましたが、私は立ち往生しています。ドッカーのコンテナからのERR_EMPTY_RESPONSE
私はこのようになります非常に単純なDockerfileあります
FROM alpine:3.6
COPY gempbotgo/
COPY configs /configs
CMD ["/gempbotgo"]
EXPOSE 8025
gempbotgoはウェブサーバといくつかの他のものを実行しているだけで、外出先のバイナリです。 Webサーバーは8025で動作しており、こんにちはの世界で答えなければなりません。
私の問題はポートを公開することです。私は(それを構築した後)は、このような私のコンテナ
docker run --rm -it -p 8025:8025 asd
すべては罰金だが、私はwgetのをブラウザで127.0.0.1:8025を開いたりしようとしようとしたとき、私はちょうど空の応答を取得しました。 Chrome:ERR_EMPTY_RESPONSE
このポートはWindows 10システムで使用され、ファイアウォールによって制限されません。 私の "WindowsのUbuntu on Bash"端末のコンテナを使わずにgoバイナリを実行し、127.0.0.1:8025にブラウズすると、問題なく動作します。 他のアドレスは127.0.0.1:8030のような "ERR_CONNECTION_REFUSED"を返すので、ポート上で何かがアクティブになっています。
私はその後
docker exec -it e1cc6daae4cf /bin/sh
でconatinerに行って、何が起こるのwgetとそこでチェック。また問題はありません。 index.htmlファイルが「Hello World」でダウンロードされる
ドッカーがデータを送信しない理由は何ですか?私はドッカーでコンテナを走らせましたが、違いはありません。
私はVPSのコンテナを外部でホストしていました。そこに同じ問題...(Debianの)
私のコードは:(Makefileを注意してください) https://github.com/gempir/gempbotgo/tree/docker
編集:
いくつかのコメントを取得した後、私は多段ビルドに私のDockerfileを変えました。これが今の私のDockerfileです:悲しいことに、これは何も変更しませんでした
FROM golang:latest
WORKDIR /go/src/github.com/gempir/gempbotgo
RUN go get github.com/gempir/go-twitch-irc \
&& go get github.com/stretchr/testify/assert \
&& go get github.com/labstack/echo \
&& go get github.com/op/go-logging
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY configs ./configs
COPY --from=0 /go/src/github.com/gempir/gempbotgo/app .
CMD ["./app"]
EXPOSE 8025
、私はここで、ガイドへのpossbileなどの近くにすべてを保持:https://docs.docker.com/engine/userguide/eng-image/multistage-build/#use-multi-stage-builds
私も見えたgolang.orgからミニマリストDockerfileを試してみました次のようになります。
FROM golang:onbuild
EXPOSE 8025
しかし、どちらも成功しません。
バイナリはどのように構築されていますか?コンテナからの出力は?'ubuntu'のような別のベースでlibcの問題ではないことを検証しようとしましたか? –
あなたのgoファイルのコードを投稿してください –
私のコードはhttps://github.com/gempir/gempbotgo/tree/dockerですMakefileを別にコンパイルしています – gempir