部署多容器docker symfony应用程序的正确方法是什么?
到目前为止,我有以下知识库和情况:
- 我的docker-compose环境在本地工作,由nginx,php5-fpm,memcached,mysql和mailcatcher组成
- 我正在使用多容器EB应用程序,目标是使用单独的配置运行单独的“测试”和“生产”环境
- 我已经知道我不能简单地在EB中构建整个东西并且必须已经构建了图像,因此我在这里有所有这些:https://hub.docker.com/u/sunbake/dashboard/
- 我知道我可以为每个EB环境设置自定义环境变量
- 我知道SYMFONY__WHATEVER_NAME可以很容易地用作应用程序参数
醇>
现在真正困扰我的是什么,并且询问如何以更好的方式做到这一点?
- 插入敏感值(如数据库密码)似乎有点可疑 - 如果不出意外,HTML输入字段值可以存储在浏览器缓存/历史记录中
- 为整个操作系统设置敏感数据的环境变量大致相同 - 想象某人获得任何类型的系统访问权限然后引用env变量。即使这是唯一可行的事情,但要获得一个不好的明文密码
- 为了通过nginx将环境变量传递到通过php-fpm运行的PHP skript,nginx配置文件必须传递它们。换句话说,如果我想使用这种方法,我必须在我的nginx.conf中有硬编码的参数(是的,没有值,但继续阅读)。
醇>
第8个子弹是我的全部观点和问题:
- 鉴于本文中的第3个子弹,这意味着我每次想要添加参数时都必须重建整个图像,这可以完成,但似乎是一个开销,也意味着我无法使用多个应用程序的图像,可能有不同的参数
- 鉴于图像及其来源必须是公开的(我不打算在此用例中支付docker hub),它还会公开应用程序的部分工作方式。例如,如果潜在的攻击者可以某种方式执行代码来列出我的env变量,他就知道要查找哪些env变量。
醇>
我希望使用整个bitbucket-docker-dockerhub-eb在多个环境中自动部署:
- 在具有一组特定docker镜像的本地主机上进行开发(mailcatcher,本地mysql实例,已启用xdebug)
- AWS EB上的测试环境,其RDS中没有mailcatcher和数据库
- 生产环境与测试环境相同,但没有xdebug和一些小的优化调整
当然必须有办法如何做到这一点。我相信我走得很远,但我有些不对劲。任何提示都将不胜感激。