首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用码头自动安全地部署新的mySQL实例?

如何使用码头自动安全地部署新的mySQL实例?
EN

Server Fault用户
提问于 2019-10-10 05:28:31
回答 1查看 105关注 0票数 0

我希望能够运行一个脚本,以尽可能少的手动步骤将我的应用程序部署到一个新服务器上,而无需向外界公开数据库密码。

该应用程序由一个web应用程序(nginx +定制的东西)和一个mysql数据库组成。我知道如何自动部署它,但并不是安全的:只需将根密码存储在docker和web应用程序的某个地方即可。显然,这一点根本不安全。

我知道如何安全地部署它:当前的mySQL文档建议部署默认的mySQL映像,grep生成的根密码,然后在容器中运行mysql,将这个密码更改为“您选择的密码”。然后,我想我必须将这个“我选择的密码”放在web应用程序配置中,这样我的web应用程序就能够连接到数据库了。

我不知道的是,推荐的自动和安全部署mySQL的方法是什么。我可以在部署过程中生成“我选择的密码”,但是如果我无论如何都要把密码放在信任中,那么使用一次性随机生成的mySQL密码又有什么意义呢?有人能告诉我最好的做法吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-10-10 12:53:19

请参阅环境变量的合成的官方指南。

您希望将您的docker-compose.yml提交到源代码管理中,因此密码不应该在其中。根据官方的码头枢纽上的mysql文档,您需要提供的主要变量是MYSQL_ROOT_PASSWORD

实际上,他们的示例提供给带有docker run标志的-e命令:

代码语言:javascript
复制
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

这可能会在日志中结束,因此我将其放入文件.env中,并在我的项目根目录中添加其他配置变量。

代码语言:javascript
复制
# .env
MYSQL_ROOT_PASSWORD=my-secret-pw

然后在撰写文件中引用这个.env文件:

代码语言:javascript
复制
version: '3.1'
services:
  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    env_file:
      - .env

您还可以将行.env添加到项目中的.gitignore文件中,这样就不会意外地泄露秘密。

然后以另一种方式将.env文件部署到每个环境中。当然,一定要chmod 600 .env

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/987447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档