[학습] 도커- Dockerfile, docker-compose.yml
- 국비지원 (스파르타)
- 2025. 3. 27. 22:25
어제 대략적인 도커학습을 마치고
오늘은 Dockerfile에 대해 학습을 하려고한다.
내가 잘못알고 있던 부분이 인텔리제이에서 Dockerfile을 run하게 되면 실행이 된다고 생각했다.
하지만 아니었다. 이 행위는 단순히 이미지를 만드는 행위이기 때문에 실제로는 실행이 안된다고 했다.
그러면 의문이 있다. 도커파일로 도커파일을 어떻게 만들 수 있을까? 나는 단순히 실행 버튼을 눌러서 해결했었는데
이거는 아닌가?
아닌거 같다.
이미지 빌드 방법은 다음과 같다고 한다.
표준적인 도커파일 빌드 명령어는 다음과 같습니다:
docker build -f Dockerfile -t {도커이름} .
여기서:
-f Dockerfile: 빌드에 사용할 Dockerfile 지정 (기본값이라 생략 가능)
-t my-app: 이미지에 이름 태그 지정
.: 현재 디렉토리의 컨텍스트 사용
실제로는 -f 부분을 생략해도 되므로 더 간단하게:
docker build -t my-app .
이렇게 해도 기본 Dockerfile을 찾아 빌드합니다.
이렇게 하면 인텔리제이에서 실행하는 거보다 정확하게 할 수 있을거 같다.

이미지로 만들게 되었고
근데 갑자기드는생각이 인텔리제이로 실행하는건 run하는게 아닌가 라는 생각을 들었다. 모르겠다.. 일단 정석으로 학습하자. 위에서 말한건 아닌듯.. 내가 알게 뭐람...

요렇게 하니 정상적으로 이미지가 생성되었다. 이제 이걸 run시켜보자.
# 포트 매핑 (호스트:컨테이너)
docker run -p 8080:80 my-app
# 백그라운드 실행
docker run -d my-app
# 볼륨 마운트
docker run -v myvolume:/app my-app
# 포트 + 백그라운드 + 볼륨 등 복합 옵션
docker run -d -p 8080:80 -v myvolume:/app my-app
요렇게 사용이 가능하다고 한다.
고러면 이제 실행시켜보자.
내가 p를 안적었네 ㅜ

요렇게 하면 실행이 된다.

백그라운드가 아니라서 그냥 종료시켰다.
이제 요걸 토대로 도커컴포즈로 관리하면 여러개의 도커 이미지를 실행시킬 수 있다.
Docker Compose의 기본 구조는 크게 4가지 섹션으로 구성됩니다:
- version: Docker Compose 파일 버전
- services: 실행할 컨테이너들 정의 (docker run과 유사)
- volumes: 볼륨 정의
- networks: 네트워크 정의
서비스 지정
환경 변수 설정
services:
web:
environment:
- DATABASE_URL=postgresql://username:password@db/dbname
- DEBUG=true
의존성 설정 (서비스 시작 순서 제어)
services:
web:
depends_on:
- db
- redis
재시작 정책
services:
web:
restart: always
# 옵션: no, always, on-failure, unless-stopped
작업 디렉토리 설정
services:
web:
working_dir: /app
명령어 오버라이드
services:
web:
command: python manage.py runserver
컨테이너 이름 지정
services:
web:
container_name: my-web-app
네트워크 aliases
services:
web:
networks:
mynetwork:
aliases:
- web.local
빌드 옵션 (Dockerfile 사용)
services:
web:
build:
context: .
dockerfile: Dockerfile.dev
컨테이너 간 통신을 위한 expose
services:
web:
expose:
- "3000"
이러한 설정들은 상황과 필요에 따라 선택적으로 사용할 수 있습니다.
context
context는 도커 이미지를 빌드할 때 참조하는 디렉토리를 의미합니다.
예를 들어:
services:
web:
build:
context: . # 현재 디렉토리
이 설정의 의미:
현재 디렉토리(.)를 빌드 컨텍스트로 사용
Dockerfile과 함께 현재 디렉토리의 모든 파일들이 도커 빌드 프로세스에 포함됨
이 디렉토리의 파일들을 COPY, ADD 등의 명령어로 이미지에 복사 가능
다른 예시:
services:
web:
build:
context: ./backend # 특정 서브디렉토리
./backend 디렉토리를 빌드 컨텍스트로 사용
backend 디렉토리의 Dockerfile과 파일들을 사용
쉽게 말해, 이미지를 빌드할 때 참조하는 기준 디렉토리입니다.
그러니까 멀티 프로젝트를 할때 기준 빌드를 정할 수 있다고 한다.
내일 하루는 도커에 대한 내용은 잠시 쉬고 토요일 혹은 일요일에 실습을 해보자.!!
'국비지원 (스파르타)' 카테고리의 다른 글
[학습] 클린코드 (0) | 2025.03.31 |
---|---|
[학습] sql injection (0) | 2025.03.28 |
[학습] 도커를 학습해보자!! (3) | 2025.03.26 |
[면접 준비] JVM이란? (1) | 2025.03.26 |
왜 나에게만 이런일이 발생하는가? (0) | 2025.03.24 |