programing

도커 컨테이너에 mariaDB를 입력하는 방법

newsource 2022. 9. 26. 23:02

도커 컨테이너에 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.2DB에 접속합니다.

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