도커 컨테이너에 mariaDB를 입력하는 방법
도커 컨테이너 내의 MariaDB 데이터베이스에 테이블을 추가하고 싶습니다.
파일을 고려하다tree
$ tree
├── Dockerfile
└── sql
└── test.sql
와 함께Dockerfile
FROM mariadb:latest
COPY sql/test.sql /docker-entrypoint-initdb.d/
ENV MYSQL_ROOT_PASSWORD test123
ENV MYSQL_DATABASE testDB
ENV MYSQL_USER toto
ENV MYSQL_PASSWORD test123
RUN apt-get update && apt-get -y install vim
EXPOSE 3306
CMD ["mysqld"]
그리고 sql 파일은
$ cat sql/test.sql
CREATE TABLE IF NOT EXISTS test (
id int NOT NULL AUTO_INCREMENT,
name varchar(32) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO test (name) VALUES
('Toto'),
('Jack'),
('Titi');
사용하고 있다build --tag=mariadbtest .
이미지를 구축하고 실행하다
docker run --name mariadb -ti -d -p 3307:3306 mariatest
로그인 했을 때
mysql --host=0.0.0.0 --port=3307 mysql -u root -p
테이블 테스트를 찾을 수 없습니다.데이터베이스에 테이블을 추가하려면 어떻게 해야 하나요?
당신의 사례를 테스트했고, 지금까지 MariaDB를.sql
파일:
테스트 시간을 단축하기 위해 사소한 변경 외에도 컨테이너를 실행할 때 잘못된 포트를 바인딩하고 질문에 입력했다는 점에 유의하십시오.-p 3307:3306
그리고 그것은 반드시-p 3306:3306
파일 트리:
├── Dockerfile
└── test.sql
도커 파일:
FROM mariadb:latest
COPY test.sql /docker-entrypoint-initdb.d/
ENV MYSQL_ROOT_PASSWORD admin
ENV MYSQL_DATABASE test
ENV MYSQL_USER admin
ENV MYSQL_PASSWORD admin
EXPOSE 3306
test.sql:
CREATE TABLE IF NOT EXISTS test (
id int NOT NULL AUTO_INCREMENT,
name varchar(32) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO test (name) VALUES
('Toto'),
('Jack'),
('Titi');
이미지 빌드:
docker build -t "mariadb" .
컨테이너를 실행합니다.
docker run --name mariadb -d -p 3306:3306 mariadb
이 경우 할당된 도커 IP는172.17.0.2
DB에 접속합니다.
mysql -h 172.17.0.2 -P 3306 --protocol=TCP --user=admin --password=admin
그런 다음 사용할 데이터베이스를 MySQL에 지시합니다.
mysql> USE test
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
Database changed
'테스트' 표가 있는지 확인합니다.
mysql> show tables like "test";
+-----------------------+
| Tables_in_test (test) |
+-----------------------+
| test |
+-----------------------+
1 row in set (0.00 sec)
표에서 모든 항목을 선택합니다.
mysql> SELECT * FROM test;
+----+------+
| id | name |
+----+------+
| 1 | Toto |
| 2 | Jack |
| 3 | Titi |
+----+------+
3 rows in set (0.01 sec)
Docker가 작업을 초기화하도록 하는 대신 처음 연결하면 다음과 같이 하십시오.
CREATE DATABASE testDB; -- (or was it mariadbtest??)
USE testDB; -- (same as above)
CREATE TABLE ...
언급URL : https://stackoverflow.com/questions/52074643/how-to-populate-a-mariadb-in-an-docker-container
'programing' 카테고리의 다른 글
'for' 루프 내부의 'for' 루프가 동일한 카운터 변수 이름을 사용할 수 있습니까? (0) | 2022.09.26 |
---|---|
PHP의 opcode를 얻는 방법 (0) | 2022.09.26 |
3가지 다른 점은 (0) | 2022.09.25 |
값 오류:요소가 두 개 이상인 배열의 참값 값이 모호합니다.a.any() 또는 a.all()을 사용합니다. (0) | 2022.09.25 |
요청이 있는 python에서 대용량 파일 다운로드 (0) | 2022.09.25 |