我目前正在使用 docker 容器和 mysql 数据库。每个应用程序在其自己的 docker 容器中都有自己的 mysql 数据库。应用程序和数据库共享一个网络,应用程序本身是通过另一个网络(traefik)访问的。这意味着mysql数据库无法从外部访问。为 mysql 实例设置安全密码有多重要?有最佳实践吗?
更新:现在使用 Docker 秘密
这是我与 nextcloud 一起使用的示例docker-compose.yaml :
services:
nextcloud-db:
image: mariadb
container_name: nextcloud-db
command: --transaction-isolation=READ-COMMITTED --log-bin=ROW
restart: unless-stopped
volumes:
- /opt/docker/nextcloud/database:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/mysql_root_password
MYSQL_PASSWORD_FILE: /run/secrets/mysql_user_password
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_INITDB_SKIP_TZINFO: 1
secrets:
- mysql_root_password
- mysql_user_password
secrets:
mysql_root_password:
file: /opt/docker/secrets/mysql_root_password
mysql_user_password:
file: /opt/docker/secrets/mysql_user_password
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令创建秘密文件:
openssl rand -base64 32 > /opt/docker/secrets/mysql_root_password
openssl rand -base64 32 > /opt/docker/secrets/mysql_user_password
Run Code Online (Sandbox Code Playgroud)
即使您的应用程序位于本地 docker 网络中,您也应该始终致力于在 MySQL 上使用强密码。
\n\n您永远不知道您的应用程序环境将来何时发生变化,或者哪些用户将在某个时刻访问该本地网络。
\n\n幸运的是,它\xe2\x80\x99s非常容易通过Docker swarm和Docker compose使用秘密(这些秘密是非常简单的文件,包含安装在容器中的/secrets目录中的密码)。
\n\n请参阅此处的示例: https: //blog.ruanbekker.com/blog/2017/11/23/use-docker-secrets-with-mysql-on-docker-swarm/
\n 归档时间: |
|
查看次数: |
10879 次 |
最近记录: |