请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答

3回答

func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe("0.0.0.0:80", nil))
}
func handler(w http.ResponseWriter, r *http.Request) {
redisHost := os.Getenv("REDIS_HOST")
if redisHost == "" {
redisHost = "redis"
}

您的代码有问题,首先监听127.0.0.1意思是只有本地才能访问,如何让外面访问呢,改成0.0.0.0即可

第二,您的redisHost写127.0.0.1 怎么能可以? redis是另外一个container起得,根本不在本地127.0.0.1怎能访问的到呢。 改成redis即可,这也是docker-compose里redis服务的名字,用名字访问即可,这个我们在课程里有讲过。

https://img1.sycdn.imooc.com//szimg/5cf823b10001130014921594.jpg

0 回复 有任何疑惑可以回复我~
  • 提问者 Haleeeea #1
    可以了,谢谢老师!
    回复 有任何疑惑可以回复我~ 2019-06-06 08:25:52
提问者 Haleeeea 2019-06-04 10:08:11

按照例子,创建了一个Nginx的容器,可以正常访问。 

https://img1.sycdn.imooc.com//szimg/5cf5cfd9000125cc14140920.jpg


但是我自己的依旧不可以(添加了端口映射)

docker run -d --link=redis --publish=8888:80 --name=golang-redis -e REDIS_HOST=redis holydocker417/golang-redis

https://img1.sycdn.imooc.com//szimg/5cf5d1bc000195fd28780326.jpg

0 回复 有任何疑惑可以回复我~
  • 我看您起了三个容器,那个nginx的8000端口可以访问,但是golang 8888访问不了是么,那请问您通过docker exec 进到golang-redis内,访问 127.0.0.1:80能访问么?
    回复 有任何疑惑可以回复我~ 2019-06-05 04:30:30
  • 提问者 Haleeeea 回复 麦兜搞IT #2
    进到容器里是可以访问的
    回复 有任何疑惑可以回复我~ 2019-06-05 11:33:16
  • 麦兜搞IT 回复 提问者 Haleeeea #3
    把你的docker-compose文件分享一下我,我在本地试试
    回复 有任何疑惑可以回复我~ 2019-06-05 14:18:14
麦兜搞IT 2019-06-04 02:54:50

您好,这是Mac的限制,不是您的问题,您可以参考下这个https://docs.docker.com/docker-for-mac/networking/    mac下的docker在网络方面有一些限制。

0 回复 有任何疑惑可以回复我~
  • 提问者 Haleeeea #1
    添加了端口映射,还是不行呢
    回复 有任何疑惑可以回复我~ 2019-06-04 10:09:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信