Не удается связаться с сервером внутри док-контейнера с хоста - PullRequest
2 голосов
/ 09 июня 2019

Я размещаю mysql сервер и go http сервер в докере.Я не могу подключиться к http-серверу с моего хоста.Мой хост-компьютер - Mac.

Я пытался использовать localhost:8080 и ipofserver:8080.Я получаю ip от docker inspect.Я могу подключиться к своему mysql серверу с моего хоста, но не могу подключиться к серверу с хоста.

Вот мой вывод docker ps.

0.0.0.0:8080->8080/tcp
0.0.0.0:3306->3306/tcp, 33060/tcp

Ниже приведены мои данные:

Docker Desktop версия 2.0.0.3.

docker-compose

version: '3.1'

services:

    mysql:
        image: mysql:latest
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: mydb
        volumes:
            - mysql:/var/lib/mysql
        ports:
            - "3306:3306"
        networks:
            - mynetwork

    server:
        image: server:latest
        networks:
             - mynetwork
        ports:
             - "8080:8080"

volumes:
    mysql: ~

networks:
    mynetwork:
        driver: "bridge"

mysql dockerfile

FROM mysql:8.0.16

COPY ./scripts/mysql/dbgen-v1.sql /docker-entrypoint-initdb.d/

EXPOSE 3306

серверный dockerfile

FROM golang:1.12.5

WORKDIR a/go/path
COPY . .

ENV GOBIN=/usr/local/bin

RUN go get github.com/go-sql-driver/mysql
RUN go get github.com/iancoleman/strcase
RUN go get github.com/jmoiron/sqlx
RUN go get github.com/spf13/cobra
RUN go get github.com/gorilla/websocket
RUN go get github.com/spf13/viper

RUN go install -v cmd/project/main.go

EXPOSE 8080

CMD ["main"]

1 Ответ

1 голос
/ 09 июня 2019

(Этот ответ основан на нашем чате в комментариях )

Чтобы веб-сервер изнутри контейнера размещался на хосте, ему необходимо привязаться к 0.0.0.0, а не к 127.0.0.1. Использование 0.0.0.0 гарантирует, что веб-сервер привязывается к интерфейсу моста, к которому можно получить доступ со стороны хоста.

Соответствующие документы Docker: https://docs.docker.com/v17.09/engine/userguide/networking/default_network/binding/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...