반응형
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 |