Я пытаюсь развернуть простой пример веб-сервера на экземпляре Droplet из Digital Ocean. Этот пример работает на моей машине для разработки (Windows), но не на моем сервере (Ubuntu).
Пробовал изнутри капельки:
curl localhost:8080
Получено:
curl: (52) Empty reply from server
docker ps
показывает:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9325cfbc60d5 myapp.com "/bin/sh -c ./app" 36 minutes ago Up 36 minutes 80/tcp, 0.0.0.0:8080->8080/tcp myappcom_website_1
Применение:
package main
import (
"net/http"
"strings"
)
func sayHello(w http.ResponseWriter, r *http.Request) {
message := r.URL.Path
message = strings.TrimPrefix(message, "/")
message = "Hello " + message
w.Write([]byte(message))
}
func main() {
http.HandleFunc("/", sayHello)
if err := http.ListenAndServe(":8080", nil); err != nil {
panic(err)
}
}
Dockerfile:
# Build stage
FROM golang:alpine AS builder
WORKDIR /go/src/app
COPY . .
RUN apk add --no-cache curl
RUN curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
RUN dep ensure
RUN go install
# Final stage
FROM alpine:latest
COPY --from=builder /go/bin/app /app
ENTRYPOINT ./app
LABEL Name=myapp.com Version=0.0.1
EXPOSE 8080:8080
докер-compose.yml:
version: '3.6'
services:
website:
image: myapp.com
build: .
ports:
- 8080:8080
Почему?
РЕДАКТИРОВАТЬ: я отметил, что если я docker ps
на моем компьютере разработчика, в «портах» он показывает 0.0.0.0:8080->8080/tcp
, без порта 80, как в капле. Я не выставлял порт 80 на своей капле, поэтому мне интересно, почему он там показан. Может быть, цифровое изображение докера океана что-то испортило?