Docker-在构建阶段安全设置MySQL/MariaDB根密码



我正在尝试创建一个docker构建/组合,在这里我可以在构建/运行时安全地为MariaDB服务器设置根密码,而不必通过docker exec在shell中手动设置。我想成为一个完全放手的人。

我已经尝试了多种方法来实现这一点,包括BuildKit秘密,但如果可能的话,我会尽量避免使用Swarm。我读到使用docker compose可以做到这一点,所以我为它写了一个YAML,但它似乎不起作用。

compose似乎工作得很好,但是当我尝试使用以下命令从转储更新数据库时(这个exec只是为了测试得很好而不需要手动操作(:

docker exec -i my_db_containter mysql -uroot -pmypassword < dbserver/sqlconfig/db_dump.sql

我得到这个错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

有人能发现我在这里可能做错了什么吗?有人能提出一个替代方案来以这种方式设置服务器根密码吗?

--

编辑:在进行了更多的阅读之后,即使是这种方法似乎也不那么安全,因为它似乎只是在容器中装载一个只读文件?有人对我如何自动安全地设置MYSQL_ROOT_PASSWORD有什么建议吗?如果蜂群真的是唯一的选择,那么我想我可以调查一下

--

以下是我目前所拥有的:

docker-compose.yaml:

version: '3.9'
services:
db:
build:
context: "./dbserver"
container_name: 'my_db_container'
environment:
MYSQL_DATABASE: 'my_db'
MYSQL_ROOT_PASSWORD: /run/secrets/dbrootpass
networks:
my_net:
ipv4_address: 203.0.113.88
secrets:
- dbrootpass
networks:
my_net:
ipam:
driver: default
config:
- subnet: "203.0.113.0/24"
secrets:
dbrootpass:
file: ./rootpass

rootpass:

mypassword

创建机密:

$ read -p "Enter variable for MARIADB_ROOT_PASSWORD : " token && echo -n "$token" | podman secret create "MARIADB_PASSWORD" -
Enter variable for MARIADB_ROOT_PASSWORD : whynot
7f3b681f9a05729ad5b6af9d5
$  podman run --secret=MARIADB_ROOT_PASSWORD,type=env   --secret=MARIADB_PASSWORD,type=env  --env MARIADB_USER=bob  mariadb:10.5

集装箱内部:

$ podman exec -ti funny_cohen  bash
root@2583f8620571:/# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
mysql          1       0  0 03:31 ?        00:00:00 mysqld
root         143       0  0 03:32 pts/0    00:00:00 bash
root         146     143  0 03:32 pts/0    00:00:00 ps -ef
root@2583f8620571:/# printenv
GPG_KEYS=177F4010FE56CA3336300305F1656F24C74CD1D8
PWD=/
MARIADB_USER=bob
container=podman
HOME=/root
MARIADB_VERSION=1:10.5.10+maria~focal
GOSU_VERSION=1.12
TERM=xterm
MARIADB_MAJOR=10.5
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/printenv

然而,它确实出现在podman inspect funny_cohen中。

最新更新