我创建了一个简单的应用程序,由nginx和python flask组成,由两个容器组成,我可以使用docker-compose将其部署到bluemix。
docker compose文件是 docker-compose-bluemix.yml
flask:
image: registry.ng.bluemix.net/namespace/simple.flask
restart: always
expose:
- "8000"
command: /usr/local/bin/gunicorn -w 2 -b :8000 app:app
nginx:
image: registry.ng.bluemix.net/namespace/simple.nginx
restart: always
ports:
- "80:80"
links:
- flask:flask
一旦我将ip分配给nginx容器就行了,因为我可以像这样访问它,
curl http://ip/flask-api/v0.01/hello
并返回正确的回复
{"status": "hello"}
如何为此应用启用https?必须通过提供nginx容器自签名证书来完成,还是可以利用bluemix为我提供容器的 https://xxx.mybluemix.net 地址?如果是这样,怎么样?
答案 0 :(得分:1)
如果您希望Bluemix分配类似https://xxx.mybluemix.net的路由,则需要部署可扩展组而不是单个容器。可以为可伸缩组分配允许SSL(https://)访问的路由。
我不相信您可以使用Docker Compose执行此操作,因为Docker不了解Bluemix中的容器组功能。您可以使用Cloud Foundry CLI的IBM Container扩展从命令行或使用以下命令从您选择的DevOps管道工具执行此操作:
cf ic group create --name simple-flask -m 64 -p 8000 --min 1 --max 3 --desired 2 registry.ng.bluemix.net/namespace/simple-flask:latest
cf ic route map -n simple-flask -d mybluemix.net simple-flask
此时您不需要nginx
,因为Bluemix会在您的容器组前放置一个负载均衡器,以便将流量引导到其中的容器。然后您可以通过以下方式访问它:
https://simple-flask.mybluemix.net/flask-api/v0.01/hello
这应该可以为您提供所需的信息。
〜JR