현제의 현재이야기
[Devops] docker compose의 volumes 본문
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 파일을 불러올 수 있게 해야겠다.
'Infra' 카테고리의 다른 글
[DevOps] static 파일 처리기 (0) | 2023.07.30 |
---|---|
[docker]ERROR [internal] load metadata for ~ 오류 해결 (0) | 2023.07.25 |
[Devops] [Error]docker-compose : Unsupported config option for services service: 'platform' 해결 (0) | 2023.07.19 |
[DevOps] Docker compose 환경변수 (1) | 2023.05.22 |
[DevOps] nginx를 이용한 무중단 배포 (1) | 2023.05.19 |
Comments