새로운 인스턴스를 초기화하는 방법은 docker hub의 Initializing a fresh instance 파트에서 찾을 수 있다. 해당 파트에는 아래의 내용이 기재되어 있다.
Initializing a fresh instance When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions .sh, .sql and .sql.gz that are found in /docker-entrypoint-initdb.d. Files will be executed in alphabetical order. You can easily populate your mysql services by mounting a SQL dump into that directory and provide custom images with contributed data. SQL files will be imported by default to the database specified by the MYSQL_DATABASE variable.
해석하면, 처음 데이터 베이스를 초기화하기 위해서 쉘 언어나 sql 언어로 구성한 파일을 생성한다. 그리고 이 파일들을 /docker-entrypoint-initdb.d 에서 접근할 수 있게 해둔다. 그러면 인스턴스 생성 시에 이 파일을 자동으로 읽어 스크립트를 실행하고, 초기화해준다는 것이다.
즉 아래와 같이 구성한 뒤 docker-compose up! 하면 알아서 _id, age, sex라는 컬럼을 가지는 테이블이 생성되고, 그 안에 50, 1 이라는 데이터도 채워지게 되는 것이다.
./init-files/nit-file.sql
create table test (
_id int primary key auto_increment,
age int not null,
sex int not null);
insert into test (age, sex) values(50, 1);
docker-compose.yml
version: '3'
services:
mysql:
image: mysql
volumes:
- ./mysql_data/:/var/lib/mysql/
- ./init-files:/docker-entrypoint-initdb.d
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --default-authentication-plugin=mysql_native_password
'CS' 카테고리의 다른 글
conda 가상환경명 재설정 (rename) (0) | 2023.08.16 |
---|---|
파이토치 GPU 인식 확인하기 (0) | 2023.07.28 |
mysql user 추가하기 (부제: mysql sudo 없이 접근하기) (0) | 2023.07.21 |
hyper + fish 조합으로 매일 들어가고 싶은 터미널 꾸미기 (터꾸 !_<) (0) | 2023.07.21 |
screen 셸 설정하기 (fish, bash, ..) (0) | 2023.07.20 |