Докер: Localhost:8080 не отвечает

Я запускаю докер:

docker run -p 8080:8080 -t admin

localhost:8080 не отвечает, но я запускаю go run admin/main.go я могу дозвониться localhost:8080 Я знаю, что есть много вопросов по этой проблеме, и я все изучил:

Использование правильных портов: 8080:8080

Я могу подключиться к серверу, работая на своей локальной машине: убедитесь, что сервер обслуживает правильный порт.

Вот мой Dockerfile — выставляю правильный порт 8080:

FROM --platform=linux/amd64 golang:1.19.3-bullseye

# Install grpc
RUN go install google.golang.org/grpc/cmd/[email protected] && \
    go install google.golang.org/protobuf/cmd/[email protected]

WORKDIR /app
COPY . .
# Install protoc and zip system library
RUN apt-get update && apt-get install -y zip && apt-get install -y tree && \
    mkdir /opt/protoc && cd /opt/protoc && wget https://github.com/protocolbuffers/protobuf/releases/download/v3.7.0/protoc-3.7.0-linux-x86_64.zip && \
    unzip protoc-3.7.0-linux-x86_64.zip

# Copy the grpc proto file and generate the go module
# RUN /opt/protoc/bin/protoc --proto_path=/app --go_out=/app --go_opt=paths=source_relative --go-grpc_out=/app --go-grpc_opt=paths=source_relative /app/proto/textbear.proto /app/proto/server.proto
RUN /opt/protoc/bin/protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative proto/textbear.proto db/proto/db.proto server/proto/server.proto
RUN go mod download
EXPOSE 8080
RUN go build -o /admin admin/main.go
ENTRYPOINT ["/admin"]

Я, наверное, упускаю что-то очевидное.

Я думаю, что ваша точка входа должна быть ./admin, а не /admin

Parham Alvani 13.11.2022 06:45

Опубликуйте сообщение об ошибке и соответствующие части журнала контейнера.

root 13.11.2022 06:54

./admin ошибка приложения, потому что не найдено. Об ошибке: Ошибок вообще нет и логов тоже.

amb1s1 13.11.2022 07:01

Я нашел проблему. Этот контейнер зависит от другого контейнера. Им нужно общаться через grpc, и я не настроил сеть между ними в docker compose.

amb1s1 13.11.2022 07:04

Как приложение настраивает свой сетевой прослушиватель? Независимо от вашей конфигурации Docker, если он прослушивает только частный адрес локального хоста 127.0.0.1 или если он не прослушивает тот же порт 8080, он будет недоступен.

David Maze 13.11.2022 12:44
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
5
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мой контейнер администратора зависит от сети контейнеров БД. Мой контейнер администратора использовал адрес localhost и вызывал зависание контейнера администратора в ожидании подключения к контейнеру БД. Я исправил, изменив адрес с localhost на db, и, поскольку docker compose будет генерировать хост для всех изображений, администратор мог общаться с БД, используя имя хоста db.

Вот мой Dockerfile:

version: '3'

services:
  admin:
    image: admin
    ports:
      - "8080:8080"
  db:
    image: db
    ports:
      - "50052:50052"
  server:
    image: server
    ports:
      - "50051:50051"

Другие вопросы по теме