도커 - 빌드 단계에서 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
'programing' 카테고리의 다른 글
시리즈물을 필터링하는 방법 (0) | 2023.07.18 |
---|---|
원격 분기에서 소수의 커밋을 영구적으로 제거하는 방법 (0) | 2023.07.18 |
데이터베이스 처리량이란 무엇입니까? (0) | 2023.07.18 |
Vim에서 Python 코드 실행 중 (0) | 2023.07.18 |
플라스크에서 매 시간 실행되도록 함수를 예약하는 방법은 무엇입니까? (0) | 2023.07.18 |