登录
首页 >  Golang >  Go问答

无法从主机访问 docker 容器内的服务器

来源:stackoverflow

时间:2024-04-15 20:00:36 348浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《无法从主机访问 docker 容器内的服务器》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我在 docker 中托管 mysql 服务器和 go http 服务器。我无法从我的主机访问 http 服务器。我的主机是mac。

我尝试使用 localhost:8080ipofserver:8080。我从 dockerspect 获取 ip。我可以从主机连接到 mysql 服务器,但无法从主机访问服务器。

这是我的 docker ps 输出。

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

以下是我的详细信息:

docker 桌面版本 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"]

解决方案


(此答案基于我们在 the comments 中的聊​​天)

为了将 Web 服务器从容器内部公开给主机,它需要绑定到 0.0.0.0 而不是 127.0.0.1。使用 0.0.0.0 确保 Web 服务器绑定到可以从主机端访问的桥接口。

相关 Docker 文档:https://docs.docker.com/v17.09/engine/userguide/networking/default_network/binding/

好了,本文到此结束,带大家了解了《无法从主机访问 docker 容器内的服务器》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>