除了运行用go
编写的微服务的Docker容器(每个微服务一个容器),我需要创建一个运行第三方提供的Service Registry
服务的Docker容器框架(Koding的kontrol)。
话虽如此,我需要通过执行以下命令来创建一个运行此第三方go
应用程序的单独容器。
检索应用程序:
go get github.com/koding/kite/kontrol/kontrol
生成RSA密钥对:
openssl genrsa -out key.pem 2048
openssl rsa -in key.pem -pubout > key_pub.pem
设置一些环境变量:
KONTROL_PORT=6000
KONTROL_USERNAME="kontrol"
KONTROL_STORAGE="etcd"
KONTROL_KONTROLURL="http://127.0.0.1:6000/kite"
KONTROL_PUBLICKEYFILE="certs/key_pub.pem"
KONTROL_PRIVATEKEYFILE="certs/key.pem"
初始化Registry Service
:
./bin/kontrol -initial
启动Registry Service
:
./bin/kontrol
如何在项目中包含这些步骤?例如,我有一个docker-composer.yaml
这样的文件:
version: '3.3'
services:
api:
container_name: 'api'
build: './api'
ports:
- '8080:8080'
volumes:
- './api:/go/src/app'
depends_on:
- 'mongo'
etcd0:
container_name: 'etcd0'
image: 'quay.io/coreos/etcd'
command: >
etcd -name etcd0
-advertise-client-urls http://127.0.0.1:2379,http://127.0.0.1:4001
-listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001
-initial-advertise-peer-urls http://127.0.0.1:2380
-listen-peer-urls http://0.0.0.0:2380
-initial-cluster-token etcd-cluster-1
-initial-cluster etcd0=http://127.0.0.1:2380
-initial-cluster-state new
mongo:
container_name: 'mongo'
image: 'mongo:latest'
ports:
- '27017:27017'
volumes:
- '/var/lib/mongodb:/var/lib/mongodb'