2021 / 02 / 20 : 02:00 ~ 05:30  

> resources 적용이 안되는 문제로 고민

> 해결안되서 DB부터 설치

 

 

1. docker 설치 (windows / linux)에 맞게

2. 설치 된 후 docker 명령어로 mysql을 설치할 것 임

3. 원하는 버전을 설치하기 위해서는 태그 정보를 입력해주어야한다.

4. 아래에 5.6 5.7 같은게 버전이고, 큰 제목엔 지원하는 태그라고 되어 있다.

hub.docker.com/_/mysql

 

5. 그러면, 5.7 버전을 설치 해볼 것인데, 다르게말하면, mysql 이미지를 저장소에서 가져오겠다. 라는 뜻이다

 그 저장소 역할을 해주는 것이 docker hub 이며, repository (저장소)라고 한다.

 

6. 윈도우 기준으로 docker 설치가 되어 있다는 가정하게 설명을 적음.  명령은 똑같기 때문에 상관이 크게 없다.

 

7. cmd 창을 열고, docker라고 입력해보면, 명령어가 쫙 나열이 된다. 도커가 제대로 설치된 것이다.

8. 이미지를 다운받는 명령어는 다음과 같다

docker pull [options] name[:tag|@digest]

ex) docker pull mysql 이렇게만 입력해도 다운 받을 수 있다. 그러나, 이렇게 입력하면, 자동으로 태그는 latest 즉 최신 버전을 받아오게 된다. 그러한 이유 때문에 다음과 같이 입력해본다.

 

9. docker pull mysql:5.7

 

10. 이미지를 받는데 성공했다.

 

11. docker-compose 를 사용해서 서비스를 올릴 것이다.

원하는 경로에다 docker-compose.yml 파일을 만든다.

아래 내용을 적어놓고, 실행만 시켜주면되는데,

손봐야할 설정은

    MYSQL_ROOT_PASSWORD= 원하는 비번

    MYSQL_DATABASE=데이터베이스 이름

    ports: - 3307:3306 설정방법은 3307은 접속포트, 3306은 컨테이너 내부 포트이므로, 3307만 다른것으로 수정해주고, DB 접속시에 해당 IP+PORT로 접속하면된다.

    

volumes: 옵션에 

    로컬경로:이미지내부 경로 (db 데이터를 저장하기 위함이며, 이미지가 내려가면, 데이터가 날아가기 때문임)

    요즘 잘쓰지 않지만, CD-ROM과 비슷하다. CD-ROM에 있는 게임을 하다가, 세이브 데이터가 로컬에 없으면, CD-ROM은 기록이 불가능하기 때문에 다날아간다.

 

version: "3.7" # 파일 규격 버전
services: # 이 항목 밑에 실행하려는 컨테이너 들을 정의 ( 컴포즈에서 컨테이너 : 서비스 )
  db: # 서비스 명
    image: mysql:5.7 # 사용할 이미지
    restart: always
    command: --lower_case_table_names=1
    container_name: mysql5.7-test # 컨테이너 이름 설정
    ports:
      - "3307:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부)  <- 컨테이너 내부는 무조건 3306
    environment: # -e 옵션
      - MYSQL_DATABASE=todo
      - MYSQL_ROOT_PASSWORD=1234  # MYSQL 패스워드 설정 옵션
      - TZ=Asia/Seoul

    command: # 명령어 실행
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - D:\mysql:/var/lib/mysql # -v 옵션 (다렉토리 마운트 설정)

12. 위파일이 만들어진 경로로 이동해서 docker-compose up -d 명령어로 실행시켜주거나, -d 명령은 빼고 실행해도된다. -d 옵션은 백그라운드다. 

 

13. 접속하면 이렇게 보인다.