
version: '3.8'
services:
mongodb:
image: 'mongo'
volumes:
- data:/data/db
# environment:
# MONGO_INITDB_ROOT_USERNAME: june
# MONGO_INITDB_ROOT_PASSWORD: secret
env_file:
- ./env/mongo.env
frontend:
build: ./frontend
ports:
- '3000:3000'
volumes:
- ./frontend/src:/app/src
stdin_open: true
tty: true
depends_on:
- backend
backend:
build: ./backend
# build:
# context: ./backend
#dockerfile: Dockerfile-dev
ports:
- '80:80'
volumes:
- logs:/app/logs
- ./backend:/app
- /app/node_modules
env_file:
- ./env/backend.env
depends_on:
- mongodb
volumes:
data:
logs:
docker compose up --build
docker compose up --build
services에서 이미 빌드되어있는 이미지를 가져오는 경우에는 빌드가 필요없지만, 자체 이미지의 경우 위 커맨드를 사용하여 빌드할 수 있다.
up 옵션으로 실행하면 빌드 단계가 포함된다. 이는 컨테이너를 시작하기 위해 이미지를 빌드해야 한다면 빌드 된다.
docker compose build
docker compose build
하지만 컨테이너를 실행하지 않고 빌드만 하려는 경우에는 위 커멘드를 실행하여 이를 수행할 수 있다.



mongodb를 삭제하고 실행했는데, 실제 누락된 이미지를 빌드한 다음 컨테이너를 시작하지 않는다.

docker compose up -d
그리고 compose up 을 하면 mongodb의 이미지를 가져오는것을 볼 수 있다.
도커 컴포즈 컨테이너 이름

docker compose up 을 해서 만들어진 컨테이너의 이름이 실제 우리가 services에 넣었던 이름이 그대로 들어가는것이 아니라 일부분으로만 들어가는것을 볼 수 있다.
{docker compose up 이 실행되었던 폴더} {services에 넣은 이름} {증가되는 숫자}
container_name

services:
mongodb:
image: 'mongo'
volumes:
- data:/data/db
# environment:
# MONGO_INITDB_ROOT_USERNAME: june
# MONGO_INITDB_ROOT_PASSWORD: secret
env_file:
- ./env/mongo.env
container_name: mongodb
자체 컨테이너 이름을 지정하려면 container_name 옵션을 지정해야한다.

이렇게 docker ps 로 확인했을 때 컨테이너의 이름이 mongodb로 잘 나오는것을 볼 수 있다.
댓글