![[Docker] MySQL 이미지 빌드](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcBuqM%2FbtsJthXJAPa%2FO6WkDo5x9ADKa6rDA492gK%2Fimg.webp)
[Docker] MySQL 이미지 빌드DevOps/Docker2024. 9. 8. 00:47
Table of Contents
- 도커파일이 존재하는 디렉토리에 init.sql과 my.cnf가 존재한다.
- init.sql은 구축되어야할 DDL등이 정의되어있는 sql 파일이다.
Dockerfile
# MySQL 8.0 버전을 베이스 이미지로 사용 FROM mysql:8.0.32 # MySQL 설정 파일을 복사 COPY ./my.cnf /etc/mysql/conf.d/my.cnf # init.sql 파일을 /docker-entrypoint-initdb.d/로 복사 COPY ./init.sql /docker-entrypoint-initdb.d/ # 계정 정보 설정 ENV MYSQL_ROOT_PASSWORD=<루트 비밀번호 계정> ENV MYSQL_DATABASE=<데이터베이스 이름> ENV MYSQL_USER=<데이터베이스 유저> ENV MYSQL_PASSWORD=<패스워드> # MySQL 기본 포트 3306 노출 EXPOSE 3306 |
init.sql은 서비스가 실행되기 위한 SQL 파일을 의미한다.
이 파일을 /docker-entrypoint-initdb.d/ 로 복사하면 MySQL 컨테이너가 실행될 때 init.sql 파일이 자동으로 실행된다.
즉, 서비스가 실행되기 위한 테이블 정의나 데이터 삽입 등을 init.sql 파일에 적어놓고 컨테이너가 실행될 때 자동으로 되게 하는 것이다.
my.cnf
[mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' [client] default-character-set=utf8mb4 |
DB 컨테이너에서 한글이 깨지는 것을 방지하기 위한 설정파일이다.
이제 도커 이미지를 빌드하면 된다.
도커파일이 있는 경로로 이동 후에 아래의 명령어로 이미지에 태그를 붙히고 빌드한다.
이후 자신의 이미지 레지스트리에 푸시한다.
docker build -t [도커 레지스트리 계정명]/[이미지명[:태그명]] .
docker push [도커 레지스트리 계정명]/[이미지명[:태그명]]
이후 실행할 때는 아래의 명령어를 입력한다.
docker run -d -p 3306:3306 --name [지정하고픈 컨테이너명] [도커 레지스트리 계정명]/[이미지명[:태그명]]
'DevOps > Docker' 카테고리의 다른 글
[Docker] Stateless (1) | 2024.09.12 |
---|---|
[Docker] 이미지와 컨테이너 레이어 (0) | 2024.09.09 |
[Docker] 이미지 레지스트리 (3) | 2024.09.07 |
[Docker] 이미지와 컨테이너 (0) | 2024.09.06 |
[Docker] 하이퍼바이저 및 컨테이너 가상화와 도커 아키텍쳐 (0) | 2024.09.05 |