Docker 특강 2

2star_·2024년 12월 18일

Docker

목록 보기
5/6

기본 파일 구조

Django-Docker-Postgres폴더를 만들고, 가상환경 실행 후 실습 진행했다.

django-admin startproject myproject . 명령어로 새 장고실습파일 만들고 진행.

dockerfile

코드

# python 3.9 이미지를 Dockerhub에서 가져온다.
FROM python:3.9

# app이라는 폴더를 컨테이너 안에다가 만들고, 거기로 이동해 줘.
WORKDIR /app

# requirements.txt를 app 폴더 안으로 옮겨줘.
COPY requirements.txt .

# pip install해서 requirements.txt를 설치
RUN pip install --no-cache-dir -r requirements.txt

# 지금 django-docker-postgres 폴더를 컨테이너의 app 폴더로 복사시켜줘.
COPY . .

# python manage.py runserver할 건데, 8000번 포트에 대한 외부 접속을 허용할 거야.
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

docker-compose.yml

코드

version: '3.9'

services: # 내가 띄울 컨테이너 목록
  db: # db라는 이름을 가진 컨테이너
    image: postgres:13  # postgres 13 버전 이미지를 가져올 거야.
    environment:  # db 컨테이너의 환경변수
      POSTGRES_DB: mydb # 데이터베이스 이름
      POSTGRES_USER: myuser # 데이터베이스 소유자(만든 사람)의 ID
      POSTGRES_PASSWORD: mypassword # 소유자의 비밀 번호
    ports:  # 포트포워딩 할거야. (들어온 포트랑 나가는 포트랑 연결한다.)
      - "5432:5432" # 5432로 외부에서 접속하면, 컨테이너 안의 5432 포트로 연결해 줘.
    volumes:  # 컨테이너의 볼륨(하드디스크) 경로를 설정해준다.
      - postgres_data:/var/lib/postgresql/data  # 이건 정해져 있는 값임
  # 다른 컨테이너
  web:  # web이라는 이름을 가진 컨테이너
    build: .  # 지금 docker-compose가 있는 경로를 docker build해서 이미지 만들어라.
    # command: python manage.py runserver 0.0.0.0:8000  # Dockerfile의 CMD와 동일 Dockerfile에서 CMD 정의했기에 주석처리함
    volumes:  # web 컨테이너의 볼륨 설정
      - .:/app  # 지금 docker-compose.yml이 있는 경로는 컨테이너의 app 폴더랑 같다.
    ports:
      - "8000:8000"
    depends_on: # web 컨테이너는 의존해야 한다. 어디에?
      - db  # db 컨테이너에

volumes:  # volum 이름 짓기
  postgres_data:  # 볼륨 이름
docker-compose build
docker-compose up

compose up한 후 기존 터미널이 아닌 새 터미널에 띄어서 진행

마이그레이션

django - setting 설정

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydb',
        'USER': 'myuser',
        'PASSWORD': 'mypassword',
        'HOST': 'db',  # Docker Compose에서 정의한 서비스 이름
        'PORT': '5432',
    }
}

세팅 맞추고 진행

docker-compose exec web python manage.py migrate

마이그레이션 후 DBeaver

새 데이터베이스 연결

PostgreSQL 찾아서 usernamepasswordsetting에 맞게 설정 후 왼쪽 하단의 Test Connection 클릭

이런식으로 연결을 할 수 있었다.,~!

profile
안녕하세요.

0개의 댓글