반응형
MYSQL_ROOT_PASSWORD 환경변수가 mariadb 컨테이너에 설정되어 있지 않다.
도커 스톰을 사용하여 클러스터를 설정하려고 하면 다음 오류가 나타납니다.
$ docker logs 6ea0f7290cb0
2020-11-30 10:46:08+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 1:10.5.8+maria~focal started.
2020-11-30 10:46:08+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-11-30 10:46:08+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 1:10.5.8+maria~focal started.
2020-11-30 10:46:08+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
이상한 점은 도커 컴포지트 툴을 사용하면 모든 것이 잘 작동하기 때문입니다.
이 문제를 재현하려면 , 다음의 순서에 따릅니다.
작성하다.env
파일:
DB_NAME=nest
DB_USERNAME=nest
DB_PASSWORD=nest
DB_ROOT_PASSWORD=nest
작성하다docker-compose.yml
파일:
version: '3.8'
services:
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
명령어를 사용하면docker-compose up -d
모든 것이 정상적으로 동작하고 있는 것을 확인할 수 있습니다.docker-compose ps
명령어:
$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------
db-debug_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
명령어를 사용하면docker stack deploy -c docker-compose.yml db
데이터베이스가 다음 명령어로 시작되지 않았는지 확인할 수 있습니다.docker service ls
:
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
ux1p4k6vwiyh db_db replicated 0/1 mariadb:latest
docker-compose
그리고.docker stack deploy
compose.yml 파일을 해석하는 방법에는 여러 가지 차이가 있습니다.그 중 하나는 후자가 .env 파일을 자동으로 처리하지 않는다는 것입니다.(참조) 따라서 명시적으로 참조할 필요가 있습니다.
services:
db:
image: mariadb
env_file: .env
언급URL : https://stackoverflow.com/questions/65072368/mysql-root-password-environment-variable-is-not-set-for-mariadb-container-if-i-u
반응형
'programing' 카테고리의 다른 글
Django 모델에서 mySQL ENUM 지정 (0) | 2022.09.19 |
---|---|
Larabel Alturnal의 "With()" 함수를 사용하여 특정 열 가져오기 (0) | 2022.09.19 |
Python: 목록에서 요소 찾기 (0) | 2022.09.19 |
MySQL: 사용자가 존재하는지 확인한 후 삭제 (0) | 2022.09.19 |
Vuetify 탐색 드로어 v-modeled to Vuex (0) | 2022.09.19 |