我想要进行以下配置:
Docker Containers
|||||||||||| |||||||||||| ||||||||||||
| | | | | |
| | | | | |
| | <--> | | <--> | |
| | | | | |
| | | | | |
|||||||||||| |||||||||||| ||||||||||||
nginx web server postgres
使用以下设置:
Nginx的
nginx.conf
sites-available
条目sites-enabled
的PostgreSQL
Web服务器
我也有几个问题:
a)如何将 secrets 传递给Docker,如API密钥,密码等?
b)这可能是从docker克隆repo还是有其他方法可以做到这一点?
c)部署此类应用程序的方式和位置?
d)即使可能吗?
答案 0 :(得分:4)
此设置在docker中非常常见。我建议您考虑使用docker-compose(example),因为它可以使设置更加容易。
秘密传递是在docker运行时通过环境变量完成的。如果你有很多,你可以将它们存储在env文件中。
是的,您可以从docker容器或docker build中克隆repo。在docker build期间克隆私有repo目前是不可行的(不公开你的凭据)所以通常建议在运行docker build之前克隆你的repo。
答案 1 :(得分:1)
a)通常通过环境变量传递 secrets ,容易使用容器。
b)是的,你可以,如果你想克隆一个公共仓库,你可以在Dockerfile中用RUN git clone repo
来做;如果你想确保你的回购更新,你也可以在Entrypoint
给你回购。
c)嗯......我不知道如何回答这个问题,也许是docker docs?
d)这种设置是可行的,但这里有一些建议:
Volume
来提供您的网页内容,这样您就可以将卷绑定到nginx容器并使用nginx提供静态内容。答案 2 :(得分:0)
这是Docker和Docker-Compose的小菜一碟。您只需要合适的容器,您可以在启动时传递参数。之后,可以移动撰写模板并多次实例化。
容器通过链接进行通信,docker提供了用于处理更改IP地址的主机名。
这是使用postgres数据库设置Jira Web应用程序的示例。这应该与您的示例类似。可以轻松添加nginx服务器。
jira:
image: blacklabelops/jira
ports:
- '8100:8080'
volumes:
- /opt/atlassian-home
environment:
- 'DATABASE_URL=postgresql://jiradb@postgresql/jiradb'
- 'DB_PASSWORD=jellyfish'
links:
- postgresql
postgresql:
image: sameersbn/postgresql:9.4-1
ports:
- '5432:5432'
environment:
- 'PSQL_TRUST_LOCALNET=true'
- 'DB_USER=jiradb'
- 'DB_PASS=jellyfish'
- 'DB_NAME=jiradb'
Jira服务器将与localhost:8100一起使用,数据库将与localhost一起使用:5432