Docker로 프로젝트를 띄우려면 가장 최상단의 폴더에서 docker-compose.yml 이 있어야 한다. 이걸로 띄울 프로젝트에 연관되어 있는 정보를 주어야 한다. 나의 프로젝트는 프론트엔드-백엔드-데이터베이스 이렇게 세 개가 있어서 이 세가지의 정보를 넣어주었다.
데이터베이스 관련해서는... 만약 같은 컴퓨터를 사용한다면 로컬에 데이터베이스 데이터가 남아있어서 괜찮겠지만 다른 컴퓨터를 사용하면 텅 빈 데이터베이스로 시작하게 된다. 즉, 나중에 배포를 하면 호스팅을 해야 된다는 건데 뭐... 그것도 나중에 찾아보면 되겠지... 일단은 각각의 컴퓨터에서 다른 사용자 정보 등으로 개발하려고 한다. Docker는 데이터에 대한 저장기능은 존재하지 않는다.
services:
# Database Service
db:
image: mysql:8.0
restart: always
env_file:
- .env
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
ports:
- '3306:3306'
volumes:
- ./data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
# Backend Service
backend:
build: ./backend
restart: always
env_file:
- .env
volumes:
- ./backend:/app
- /app/node_modules
ports:
- '5050:5050'
environment:
DB_HOST: ${DB_HOST}
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
DB_NAME: ${DB_NAME}
PORT: ${PORT}
DATABASE_URL: mysql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:3306/${DB_NAME}
depends_on:
- db
# Frontend Service
frontend:
build: ./frontend
env_file:
- .env
volumes:
- ./frontend:/app
- /app/node_modules
ports:
- '5173:5173'
environment:
- VITE_API_BASE_URL=${VITE_API_BASE_URL}
- VITE_GOOGLE_CLIENT_ID=${VITE_GOOGLE_CLIENT_ID}
depends_on:
- backend
그리고 이제 프론트엔드와 백엔드 각각에 그 프로젝트들을 돌릴 수 있는 정보들을 주어야 한다.
# Use Node.js as the base image
FROM node:20-alpine
# Set working directory
WORKDIR /app
# Copy package files and install dependencies
COPY package*.json ./
RUN npm install
# Copy the rest of the code
COPY . .
# Vite's default dev port
EXPOSE 5173
# Run vite dev
CMD ["npm", "run", "dev", "--", "--host"]
# Use Node.js as the base image
FROM node:20-alpine
# Set working directory
WORKDIR /app
# Copy package files and install dependencies
COPY package*.json ./
RUN npm install
# Copy the rest of the code
COPY . .
# Expose the port your backend runs on (usually 5000 or 3000)
EXPOSE 5050
# Start the app using tsx (as seen in your earlier logs)
CMD ["npm", "run", "dev"]
포스팅 작성할 때는 이렇게 간단하게밖에 쓸 수 없는데 Docker로 띄우는 것만 거의 4-5시간...? 정도는 쓴 것 같다...
일단 처음에는... ㅎㅎ... .env 파일의 존재를 잊음 ㅎㅎ...
한창 하던 중에 깨달아서 .env 파일 넣고 하니까 그 전에 셋팅해 놨던 모든 것이 리셋된 거나 마찬가지가 되었다ㅋㅋㅋ
그 뒤부터는 다시 셋팅 파일들이나 관련 코드들에서 .env 파일에서 땡겨와서 써야 하는 부분들을 다시 처리해 주어야 했다.

어쨌든 이제 돌아간다^^! 얏호^^!
프로젝트 켤 때마다 각각의 폴더에 들어가서 npm run dev 이런 거 안 쳐줘도 돼서 좋다!
프로젝트 시작 방법
최상단 폴더에서 docker-compose up -d 커맨드 입력하면 끝!
프로젝트 종료 방법
docker-compose down 커맨드 입력하면 끝!