docker/

directory
v0.0.0-...-908d554 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 2, 2020 License: Apache-2.0

README

Docker

很多朋友有疑问为什么在Docker中运行时会调不通服务,这是因为Docker有自己的网络,我们的服务端与客户端都要在这个网络中,才可能彼此访问。下面我们就给大家演示纯Docker环境时,怎么发布的简单流程。

  1. 编译Server
$ GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o go-micro-demo-server server.go
  1. 查看Consul容器的IP地址

我们假设还不知道Consul在Docker网络中的地址,现在我们获取一下地址:

$ docker inspect 797e51f0f699 | grep IPAddress
## 我们简单过滤一下,不考虑格式
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",

其中的797e51f0f699是Consul容器的id

  1. 打包docker镜像

我们需要将上一步中的consul容器的ip拿到放到Dockerfile中去

FROM alpine

ENV MICRO_REGISTRY consul
ENV MICRO_REGISTRY_ADDRESS 172.17.0.3:8500

RUN apk update && apk add tzdata && cp -r -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ADD go-micro-demo-server /go-micro-demo-server

WORKDIR /
ENTRYPOINT [ "/go-micro-demo-server" ]

打包

$ docker build . -t go-micro-demo-server:latest
  1. 启动Server容器
$ docker run go-micro-demo-server
  1. 同样的套路编译打包client
$ GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o go-micro-demo-client client.go
$ docker build . -t go-micro-demo-client:latest
  1. 启动客户端容器,输出结果
$ docker run go-micro-demo-client
你好,Micro中国

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL