diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..544ecb7 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,8 @@ +FROM mariadb:10.5.8 +ARG PASSWORD +ENV MYSQL_ROOT_PASSWORD=$PASSWORD \ + MYSQL_DATABASE=project_meat_chatbot \ + MYSQL_USER=project_meat \ + MYSQL_PASSWORD=$PASSWORD +EXPOSE 3306 +ADD scripts/initialize_db.sql /docker-entrypoint-initdb.d diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000..b465470 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,66 @@ +# 도커를 이용해 로컬 환경에서 데이터베이스 설정하기 +1. `cd {project-root}/project-meat-chatbot-be/docker` 명령어를 실행해 `Dockerfile`이 위치한 경로로 이동합니다. +2. `docker build -t {repository}:1.0.0 -t {repository}:latest --build-arg PASSWORD={passowrd} .` 명령어를 이용해 이미지를 빌드합니다. + + + + + + + + + + + + + + + + + + + + + +
인자 및 옵션설명
[인자] Dockerfile이 위치한 경로필수 인자로 위 명령어의 .입니다.
[옵션] -t + 이미지의 태그를 지정합니다. e.g. projectmeatdb
+ docker images 명령어를 통해 확인할 수 있습니다.
+ 여러 번을 사용해 한 번에 여러 개의 태그를 설정할 수 있습니다.
+ :latest를 사용할 경우 {repository}만으로도 사용할 수 있습니다. +
[옵션] --build-arg{argument-name}={argument-value} 형식으로 Dockerfile의 ARG를 오버라이딩합니다.
+3. `docker images`로 이미지 빌드 여부를 확인합니다. +4. 3번으로 image가 정상적으로 빌드된 것을 확인하면, `docker run -p {local-port}:3306 --name {container-name} -d {repository:tag}` 명령어를 실행해 컨테이너를 생성합니다. + + + + + + + + + + + + + + + + + + + + + + + + + +
인자 및 옵션설명
[인자] 이미지 + 컨테이너를 생성할 이미지명을 지정해줍니다
+ 2번에서 예시와 같이 projectmeatdb라고 명명하고, 1.0.0과 latest 태그를 설정했다면,
+ projectmeatdb 또는 projectmeatdb:1.0.0을 기입하면 됩니다. +
[옵션] -p + 로컬의 포트를 포워딩해주는 옵션입니다.
+ : 뒷 부분은 컨테이너의 포트인데, Dockerfile에 EXPOSE를 통해 지정되어 있습니다. +
[옵션] --name컨테이너 이름을 지정해주는 옵션입니다.
[옵션] -d백그라운드로 컨테이너를 실행하는 명령어입니다.
+5. `docker ps`를 통해 컨테이너 실행 여부를 확인할 수 있습니다. \ No newline at end of file diff --git a/docker/scripts/initialize_db.sql b/docker/scripts/initialize_db.sql new file mode 100644 index 0000000..ad3b993 --- /dev/null +++ b/docker/scripts/initialize_db.sql @@ -0,0 +1,8 @@ +USE project_meat_chatbot; +CREATE TABLE message ( + id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, + writer VARCHAR(50), + content LONGTEXT, + created_at TIMESTAMP +); +CREATE INDEX idx_message_created_at ON message (created_at);