현제의 현재이야기

[Devops] docker compose의 volumes 본문

Infra

[Devops] docker compose의 volumes

현재의 현제 2023. 7. 20. 17:12

docker-compose.yml

version: '3'
services:
  nginx:
    build: ./config/nginx
    ports:
      - "80:80"
    volumes:
      - .:/code
      - ./nginx/nginx:/etc/nginx.conf.d
    image: 11thbackend/nginx:latest
    depends_on:
      - web
    platform: linux/amd64
  web:
    build:
      context: .
      dockerfile: Dockerfile
    command: gunicorn --bind 0.0.0.0:8000 hackathon.wsgi:application
    volumes:
      - .:/code #현재 호스트의 작업 디렉토리를 컨테이너 내부의 /code 로 마운팅 한다는 뜻
    ports:
      - "8000:8000"
    platform: linux/amd64
    image: 11thbackend/web:latest
    environment:
      - DJANGO_SETTINGS_MODULE=hackathon.settings.prod

dockerfile

FROM python:3.9.6

ENV PYTHONUNBUFFERED 1

RUN apt-get -y update && apt-get -y install vim apt-utils && apt-get clean
RUN mkdir /project
ADD . /project

WORKDIR /project

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

진짜 계속 왜 /project로 이미지를 만들어서 컨테이너 돌렸는데 왜 volumes를 .:/code 로 한걸까? 삽질을 매우하다가

docker exec [컨테이너id] ls /project

를 해서 깨달음을 얻었다.

Dockerfile
config
docker-compose.yml
hackathon
manage.py
requirements.txt
test

이렇게 project 디렉토리에 현재 django 파일들이 나오고 /code를 하니깐

actions-runner
docker-compose.yml
nginx

이렇게 현재 호스트(Ec2 서버)의 docker-compose.yml이 있는 폴더의 디렉토리가 나왔다.

즉, volumes라는 것은 [현재 호스트]:[컨테이너 내부의 디렉토리] 라고 설정해두면

앞의 현재 호스트의 디렉토리를 컨테이너 내부의 디렉토리로도 조회할 수있게 이식해주는 것과 마찬가지였다;

 

현재 static file들이 보이지 않아서 swagger의 static 경로를 찾는 도중에 깨달아 버렸다.

이제 nginx도 수정해서 static 파일을 불러올 수 있게 해야겠다.

Comments