我想为couchdb创建一个图像,以运行多个couchdb实例。由于需要澄清的原因,我希望容器中的couchdb实例监听非默认端口,这在图像定义时也是未知的,因为这将是一个容器参数
从主机我将运行容器:
sudo docker run -d -p 10000:30000 --name couchdb -e COUCHDB_PORT=30000 my/couchdb
这将使得couchdb正在侦听的容器(30000)中的端口可以通过主机中的端口10000访问。此端口应为每个容器参数。
从容器我这样做:
curl -X GET localhost:30000
我可以从主人那里做到:
curl -X GET localhost:10000
这两个请求都会遇到同一个couchdb服务器。
设置容器很简单(只需要处理环境变量来自动编辑couchdb配置文件),但现在我遇到了阻塞问题。在Dockerfile的末尾我有:
# the default couchdb port, which in my case is not
# known at image creation time
EXPOSE 5984
显然我需要公开我的服务在容器内运行的端口,但是在创建映像时我不知道。这是一个运行时参数,它随容器的不同而不同。
启动容器时如何公开端口?