Docker

[docker] m1 맥에서 docker mysql 에러해결

반응형

express + mysql 을 docker-compose.yaml로 동시에 같은 네트워크에 2개의 컨테이너를 띄울 겁니다.

docker.compose.yaml 파일에 각 컨테이너에 대한 정보를 입력해야하는데 다음과 같습니다.

 

하지만 저처럼

m1 맥에서 mysql 컨테이너를 띄울 경우 platform을 적어줘야합니다.

mysql_node 컨테이너에 다음 코드를 추가해주시면 됩니다.

 

platform: linux/x86_64

 

docker-compose.yaml 파일의 전체 코드는 이렇습니다.

 

version: "3.8"

services:
  node_app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    volumes: 
      - .:/app
      - '/app/node_modules'
    env_file:
      - ./src/.env
    depends_on:
      - mysql_node


  mysql_node:
    image: mysql
    platform: linux/x86_64
    environment: 
      - MYSQL_DATABASE=node_docker_db
      - MYSQL_USER=woosoek
      - MYSQL_PASSWORD=password
      - MYSQL_ROOT_PASSWORD=password

 

추가로 위와 관련은 없지만

/bin/sh: npm,: not found

위와 같은 에러가 나오는 경우가 있습니다. 이 때는 Dockerfile에서 pacage.json을 working directory에 copy하는지를 확인해야 합니다.

 

다음은 예시입니다. 첫번째 COPY 부분을 주목해주세요.

package.json 파일을 /app 안으로 복사하겠다는 의미입니다.

FROM node:16

WORKDIR /app

COPY package.json /app

RUN npm install

COPY . /app

EXPOSE 8080

VOLUME [ "/app/node_modules" ]

CMD ["npm", "start"]

 

반응형

'Docker' 카테고리의 다른 글

[Docker] docker로 mysql 설치하고 접속하기  (0) 2022.04.21
[Docker] docker 실행하기(2)  (0) 2022.04.09
[Docker] docker 시작하기(1)  (0) 2022.04.09