1️⃣ 이미지 가져오는 방식: "직접 빌드(Build)" vs "가져오기(Pull)"

도커 컴포즈에서 이미지를 세팅하는 방식은 크게 두 가지가 있고, 용도가 완전히 다릅니다.

A. build 방식 (현재 작성하신 방식)

B. image만 적는 방식 (Pull 방식)

💡 실무형 혼합 예시: 실무에서는 이 두 개를 보통 섞어서 씁니다.

services:
  # 1. 내 앱은 소스코드로 직접 빌드해서 띄우고 (Build)
  my-spring-app:
    build: ./my-app
    ports:
      - "8080:8080"

  # 2. DB는 남이 만들어둔 공식 이미지를 그냥 땡겨옵니다 (Pull)
  my-database:
    image: mysql:8.0  # build 옵션이 없음! 도커 허브에서 다운받아옴
    ports:
      - "3306:3306"

2️⃣ 환경변수 위치: Dockerfile vs docker-compose.yml

이 부분이 정말 중요합니다! 두 곳 모두 환경변수를 넣을 수 있지만, **"언제 적용되느냐"**와 "보안" 측면에서 완전히 다릅니다.

🅰️ Dockerfile에 적을 때 (ENV)

🅱️ docker-compose.yml에 적을 때 (environment)