이 글은 도커사용을 위한 가이드 글이 아닙니다.
개인학습 기록용 포스팅입니다.
저번에 뜬 404페이지 오류를 수정하려 갖가지 방법 다 해봐도 안 되길래 뛰어넘겠다.
대략적으로, 제대로 실행되었다면 의도한대로 백엔드와의 연결이 되지 않은 상태로 페이지가 열린다. 따라서 "초기화면은 휑하다. "
ctrl+c로 터미널을 종료하고, 컨테이너랑 이미지를 삭제해주자
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker image prune -a
이번엔 database폴더에서 도커를 실행해보자
# dababase폴더로 가자
이번엔 database폴더의 Dockerfile을 이용하여 msql가져오기.
=> mysql 5.7버전의 이미지를 다운받아 개조할 것이다.
# 명령어 살펴보자
- ENV, 이미지 환경변수
ENV MYSQL_USER mysql_user
ENV MYSQL_PASSWORD mysql_passwordENV
MYSQL_ROOT_PASSWORD mysql_root_passwordENV
MYUSQL_DATABASE visitlog
해당 Docker파일에는 위의 내용들이 있다.
위 코드를 통해 컨테이너 안에 저런 내용이 담기게 된다
즉, MYSQL 데이터베이스에 어떤 사용자명과 비밀번호, 데이터베이스명 등을 사용할지 미리 지정해두는 것.
실제로는 이런곳에 그대로 적으면 큰 일난다. 파일만 열면 개인정보 거덜나니까.
- COPY
COPY ./scripts/ docker-entrypoint-initdb.d/
이 명령어의 역할: [scripts 안에 있는 파일들] --복사--> [이미지 내부의 파일]
다시말해 mysql은 scripts이하의 sql파일들에 적힌 쿼리 명령어들을 실행하도록 함
서비스에서 사용할 테이블들을 만들어두고 기본적으로 들어갈 데이터들을 넣어주는 쿼리들이란 것.
- - COPY와 VOLUME 차이
COPY는 RUN처럼 이미지를 생성하는 과정에서 미리 해당 이미지 안에 특정 파일을 넣어두는 것
VOLUME은 CMD처럼 컨테이너가 생성되어 실행될 때 그 내부의 폴더를 외부의 것과 연결하는 것임
그리고, 위에있는 databse-script 파일들은 컨테이너 초기화 과정에 필요한 것이기에 이렇게 하는 것.
# 이미지를 만들어보자
터미널을 이동부터
cd ../database
docker build -t database -img .
cd ../database
docker build -t database -img .
database-img 라고 설정한 이름대로 만들어지는데, 몇 초 걸릴지 기대해봤다
36.4s 걸리더라.
- 그런데 좀 이상해
유투버 얄코님의 영상보면 database-img 이름 뿐만 아니라 자동으로 mysql도 생성되던데, 나는 그렇지않다
여기서 이미 쎄하지만 넘어갔다
# 만든 이미지를 컨테이너에 담아 run, 실행해보자
docker run --name database-con -it -p 3306:3306 database -img
되었단 걸까 말았단 걸까. warning도 곳곳에 보이고.
되었다 생각하고 정리하면
mySQL은 3306이 기본 포트여서 값을 주소로 3306을 사용했다.
그리고 mySQL을 따로 설치했다면 (insert_data.sql)파일로 적은 것들이 등록되어있는 걸 확인할 수 있게 된다.
# run에 명령어를 하나 더 (-d옵션) 붙여서 실행해보자.
이제 이 컨테이너가 돌아가는 동안 해당 터미널은 쓸 수가 없으니, 해결하고 보자.
현재는 내가 볼 때만 컨테이너 내용들이 돌아가도록 설정되어있는 것이 문제.
명령어도 못 받으니, 터미널을 하나 더 만들어서 컨테이너를 중지, 삭제해주자
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
요로코롬.
이제 목적이었던 run 명령어에 -d 옵션을 붙여서 실행하자.
- -d 옵션
docker run --name database-con -p 3306:3306 -d database -img
: d 는 daemon의 줄임말인데 안 보이는 곳 뒤로 가서 알아서 컨테이너 돌라는 뜻. ('뒤'의 약자라고 생각)
이러면 id만 표시되고 컨테이너는 그대로 사용가능
작동 중인지 다음 코드로 확인
docker ps
알아서 잘 돌고 있는 것을 확인 가능
*
컨테이너 로그를 살펴보려면
docker logs -f {컨테이너명}
위 코드를 작성하여 실시간으로 로그를 볼 수 있고, ctrl+c 로 빠져나가면 된다
(실행하니 길고 무서워서 사진 생략)
다음엔 마지막인 baekend폴더를 통한 도커 알아보기.