programing

도커 - 빌드 단계에서 MySQL/MariaDB 루트 암호를 안전하게 설정합니다.

megabox 2023. 7. 18. 21:38
반응형

도커 - 빌드 단계에서 MySQL/MariaDB 루트 암호를 안전하게 설정합니다.

빌드/런타임에 셸에서 수동으로 실행하는 대신 MariaDB 서버의 루트 암호를 안전하게 설정할 수 있는 도커 빌드/구성을 만들려고 합니다.docker exec저는 완전히 즉흥적인 체격이 되고 싶습니다.

나는 빌드킷 비밀을 포함하여 이것을 작동시키기 위해 여러 가지 방법을 시도해 보았지만, 가능하면 스웜을 사용하지 않으려고 노력하고 있습니다.나는 그것을 사용하는 것이 가능하다고 읽었습니다.docker compose그래서 저는 그것을 위해 YAML을 작성했지만, 작동하지 않는 것 같습니다.

그러나 덤프에서 데이터베이스를 업데이트하려고 할 때(이 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를 무리 없이 자동으로 안전하게 설정하는 방법에 대해 제안하는 사람이 있습니까?만약 떼지어 다니는 것이 정말 유일한 선택이라면, 저는 그것을 조사할 수 있을 것 같습니다.

--

지금까지 제가 가진 것은 다음과 같습니다.

도커식의음:

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

루트 패스:

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하지만.

언급URL : https://stackoverflow.com/questions/67222383/docker-securely-set-mysql-mariadb-root-password-at-build-stage

반응형