# docker log 관리 설정파일 만들기 $ vim /etc/logrotate.d/docker /var/lib/docker/containers/*/*.log { rotate 7 daily compress missingok delaycompress copytruncate }
위의 명령어를 해석하면 다음과 같다
- rotate: 회전주기 설정 - daily: 일단위 실행 의미 - missingok: 설정로그가 없는 경우 에러메세지 출력하지 않음 - compress: 압축(원하지 않으면 nocompress 로 설정) - copytruncate: 대상이 되는 파일을 찾은 다음 설정에 맞게 날짜나 숫자를 붙여 rename
$ logrotate -fv /etc/logrotate.d/docker
Docker 세부설정 및 구조
docker-compose.yml
docker-compose.yml 파일은 docker-compose 설정을 통해 컨테이너를 통합적으로 관리해주는 파일입니다.
아래의 구조에서는 웹서버를 구동하는 Nginx Django 웹애플리케이션을 구동하는 Gunicorn을 사용하고 비동기 통신을 위한 celery 혹은 스케쥴러를 위한 celerybeat를 사용하며 해당 요청을 큐구조로 관리해주는 rabbitMq를 사용합니다.
/nginx 폴더에는 웹서버인 nginx에 대한 설정파일인이 위치하고 있으며 nginx에 대한 Docker 설정파일인 Dockerfile geo_ip 설정 파일인 GeoIP.datGeoIPv6.dat nginx에 메인 설정파일인 nginx.conf 웹어플리케이션에 대한 설정파일인 nginx-app.conf 파일이 위치하고 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# /nginx/Dockerfile FROM nginx:latest #docker 최신nginx 이미지 사용
# geo_ip 설정관련 폴더 생성 RUN mkdir /etc/nginx/geoip
# nginx 설정 초기화 RUN rm /etc/nginx/conf.d/default.conf RUN rm /etc/nginx/nginx.conf
# /nginx에 위치한 설정파일 복사 COPY nginx.conf /etc/nginx/ COPY nginx-app.conf /etc/nginx/conf.d/ COPY GeoIP.dat /etc/nginx/geoip/
Dockerfile
root폴더의 Dockerfile은 도커 컨테이너가 실행되기전 초기화하는 역할을 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
FROM python:3.7#docker 파이썬 3.7 이미지 사용
RUN apt-get -y update #api-get 업데이트
# 컨테이너 세팅 RUN mkdir /home/ubuntu COPY requirements.txt /home/ubuntu/
# WORK디렉터리 지정 WORKDIR /home/ubuntu
# 필요 라이브러리 설정 RUN pip install --upgrade pip RUN pip install -r requirements.txt