[mac] Docker Compose 로 mysql 더 쉽게 설치하여 laravel 프로젝트에서 사용하기

🔗 docker로 mysql 설치하는 두가지 방법

🔍 docker 명령어로

docker 설치

https://hub.docker.com/editions/community/docker-ce-desktop-mac

docker container run -d -p 3306:3306 mysql

아래와 같이 더 자세히 옵션을 추가할 수 있다.

docker container run -d -p 3306:3306 --name mysql_db -e MYSQL_RANDOM_ROOT_PASSWORD=yes mysql

-d 옵션
컨테이너가 detached 모드에서 실행되며, 실행 결과로 컨테이너 ID만을 출력

-p 옵션
호스트와 컨테이너 간의 포트 배포와 바인드를 위해 사용됨. 호스트 컴퓨터에서 컨테이너에서 리스닝하고 있는 포트로 접속할 수 있도록 설정해줌.

--name 옵션
컨테이너에 이름 부여

-e 옵션
컨테이너의 환경변수를 설정

⛔️ mac M1 칩의 경우 --platform 옵션 추가하기

mac M1 칩의 경우 다음과 같은 에러가 난다.

> docker container run -d -p 3306:3306 mysql
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
docker: no matching manifest for linux/arm64/v8 in the manifest list entries.
See 'docker run --help'.

❗️ platform 이 linux/amd64 임을 명시하여 에러를 해결한다.

> docker container run -d -p 3306:3306 --platform linux/amd64 mysql 

🔍 docker compose로

docker-compose.yml를 작성하기

1️⃣ 컨테이너를 실행할 폴더를 생성

> cd Documents
> mkdir docker_db
> cd docker_db

2️⃣ vi 에디터를 열어 docker-compose.yml에 다음 내용 저장

> vi docker-compose.yml
version: "3.7" # 파일 규격 버전

services: # 이 항목 밑에 실행하려는 컨테이너들 정의 ( 컴포즈에서 컨테이너 : 서비스 )
  db_mysql: # 서비스 명
    platform: linux/x86_64    # Mac m1 칩인 경우 platform을 명시해줍니다.
    image: mysql:5.7 # 사용할 이미지
    restart: always
    command: --lower_case_table_names=1
    container_name: db_mysql # 컨테이너 이름 설정
    ports:
      - "3306:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부) <- 컨테이너 내부는 무조건 3306
    environment: # -e 옵션
      - MYSQL_DATABASE=local
      - MYSQL_ROOT_PASSWORD=password  # MYSQL 패스워드 설정 옵션
      - TZ=Asia/Seoul

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

✅ 체크 해두어야 할 사항 ?
-> database 이름은 local
-> ROOT_PASSWORD는 password

3️⃣ docker-compose up 명령어로 컨테이너 실행시키기

> docker-compose up -d

docker ps 로 컨테이너의 리스트 확인 가능

> docker ps

🔗 laravel 프로젝트에서 docker container 사용

.env 파일 수정하기

위에서 ✅ 체크한 내용을 바탕으로 아래 내용이 잘 들어왔는지 확인.

DB_PORT=3306
DB_DATABASE=local
DB_USERNAME=root
DB_PASSWORD=password

좋은 웹페이지 즐겨찾기