도커
도커는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션을 컨테이너화하여 개발, 배포 및 실행을 편하게 해 줍니다. Docker 이미지는 애플리케이션을 실행하는데 필요한 모든 것들을 포함하는 패키지이며 컨테이너는 Docker 이미지를 실행할 때 생성됩니다.
pipenv를 통해 Pipfile,postgresql을 이용해서 Dockerfile를 생성하였습니다.
도커 이미지 만들기 - Dockerfile
도커 이미지를 만들기 위해서는 먼저 Dockerfile이라는 파일을 작성해야 합니다.

FROM python:3.9.6
RUN apt-get update && apt-get install -y nano vim && pip install psycopg2-binary
WORKDIR /weheproject
ENV PYTHONUNBUFFERED 1
COPY Pipfile Pipfile.lock ./
RUN pip install -U pipenv
RUN pipenv install --system --dev
Dockerfile을 작성 후 아래의 명령어를 통해 이미지를 빌드합니다.
docker build --tag appname .
그 이후 docker desktop에 들어가 보면 appname이라는 이름의 이미지를 만들어줍니다. 맨 마지막의 "."은 Dockerfile이 저장된 경로를 입력해 주면 됩니다.
프로젝트 생성
만약 프로젝트 폴더 안에 django 프로젝트가 없다면 생성해줘야 합니다.
django-admin startproject config .
도커 컨테이너 만들고 실행하기 - docker-compose.yml
docker-compose.yml을 작성합니다. docker-compose.yml을 통해서 여러 개의 컨테이너를 정의하고 실행할 수 있습니다.


version: "3.8"
services:
app:
build:
context: .
volumes:
- .:/weheproject
ports:
- "8000:8000"
image: app:weheproject
container_name: weheproject_container
command: python3 manage.py runserver 0.0.0.0:8000
depends_on:
- db
restart: always
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
container_name: POSTGRES_DB
이후 settings.py의 database부분도 수정해 줍니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'POSTGRES_DB',
'PORT': 5432,
}
}
이제 docker-compose.yml에 정의된 모든 서비스를 시작해 주는 명령어는 아래와 같습니다.
docker-compose up
아래의 명령어를 통해 실행 중인 컨테이너를 중지할 수 있습니다.
docker-compose down
Dockerfile이나 이미지 파일의 변경
만약 Dockerfile이 변경되었을 경우 컨테이너를 재 빌드해야 합니다.
docker-compose up --build
'Django > 인프라' 카테고리의 다른 글
[AWS Lightsail] 리눅스 가상머신 생성 (0) | 2024.08.06 |
---|---|
가상머신 VS 컨테이너 (0) | 2023.12.18 |
docker - getting disk info ... permission denied 에러 (0) | 2023.05.04 |
Docker - 네트워크 연결과 명령어, index.html 수정 (0) | 2023.04.18 |
Docker - 개념과 간단한 명령어 (0) | 2023.04.18 |
도커
도커는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션을 컨테이너화하여 개발, 배포 및 실행을 편하게 해 줍니다. Docker 이미지는 애플리케이션을 실행하는데 필요한 모든 것들을 포함하는 패키지이며 컨테이너는 Docker 이미지를 실행할 때 생성됩니다.
pipenv를 통해 Pipfile,postgresql을 이용해서 Dockerfile를 생성하였습니다.
도커 이미지 만들기 - Dockerfile
도커 이미지를 만들기 위해서는 먼저 Dockerfile이라는 파일을 작성해야 합니다.

FROM python:3.9.6
RUN apt-get update && apt-get install -y nano vim && pip install psycopg2-binary
WORKDIR /weheproject
ENV PYTHONUNBUFFERED 1
COPY Pipfile Pipfile.lock ./
RUN pip install -U pipenv
RUN pipenv install --system --dev
Dockerfile을 작성 후 아래의 명령어를 통해 이미지를 빌드합니다.
docker build --tag appname .
그 이후 docker desktop에 들어가 보면 appname이라는 이름의 이미지를 만들어줍니다. 맨 마지막의 "."은 Dockerfile이 저장된 경로를 입력해 주면 됩니다.
프로젝트 생성
만약 프로젝트 폴더 안에 django 프로젝트가 없다면 생성해줘야 합니다.
django-admin startproject config .
도커 컨테이너 만들고 실행하기 - docker-compose.yml
docker-compose.yml을 작성합니다. docker-compose.yml을 통해서 여러 개의 컨테이너를 정의하고 실행할 수 있습니다.


version: "3.8"
services:
app:
build:
context: .
volumes:
- .:/weheproject
ports:
- "8000:8000"
image: app:weheproject
container_name: weheproject_container
command: python3 manage.py runserver 0.0.0.0:8000
depends_on:
- db
restart: always
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
container_name: POSTGRES_DB
이후 settings.py의 database부분도 수정해 줍니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'POSTGRES_DB',
'PORT': 5432,
}
}
이제 docker-compose.yml에 정의된 모든 서비스를 시작해 주는 명령어는 아래와 같습니다.
docker-compose up
아래의 명령어를 통해 실행 중인 컨테이너를 중지할 수 있습니다.
docker-compose down
Dockerfile이나 이미지 파일의 변경
만약 Dockerfile이 변경되었을 경우 컨테이너를 재 빌드해야 합니다.
docker-compose up --build
'Django > 인프라' 카테고리의 다른 글
[AWS Lightsail] 리눅스 가상머신 생성 (0) | 2024.08.06 |
---|---|
가상머신 VS 컨테이너 (0) | 2023.12.18 |
docker - getting disk info ... permission denied 에러 (0) | 2023.05.04 |
Docker - 네트워크 연결과 명령어, index.html 수정 (0) | 2023.04.18 |
Docker - 개념과 간단한 명령어 (0) | 2023.04.18 |