Developing

패스트캠퍼스 캐시백 챌린지 33일차 본문

Devops/Fastcampus 캐시백 챌린지

패스트캠퍼스 캐시백 챌린지 33일차

DEV_BLOG 2022. 5. 20. 21:26

 

 

수강 인증샷

 

Nginx를 활용하여 docker build에 적용해보는 클립을 수강하는식으로 챌린지를 진행하였다. config 파일이나 Dockerfile들 작성하는 것이 복잡하긴한데 좋은 경험이 되는 것 같다. docker command로 image나 container 지우고 생성하는 것은 많이 해보아서 어느정도 손에 익게 된 것 같다. 다음 포스팅은 docker-compose를 활용하는 부분에 대한 포스팅을 할 예정이다.

 

 

 

 

Nginx Docker Build

 

지난번에 도커컨테이너를 실행해보았었다. 만약 d 옵션도 주게되면 putty에서 다른작업도 할 수 있게된다.

docker run -d -p 8000:8000 docker/django

 

이제 nginx를 적용하기 위해 장고파일이 위치한 디렉토리 이전 디렉토리에서 nginx에 대한 디렉토리를 만들어준다.

cd ..
mkdir nginx

 

 

 

 

manage.py runserver로 컨테이너안에서 실행시키지 않고 wsgi를 사용할 것이기에 만들었던 Dockerfile에서 아래 두줄은 지워준다.

 

 

 

nginx 폴더와 연결해주기위해 장고 디렉토리안에서 uwsgi.ini 라는 파일을 생성해준다.

[uwsgi]
socket = /srv/docker-django/django.sock
master = true

processes = 1
threads = 2

chdir = /srv/docker-django
module = fastcampus.wsgi

logto = /var/log/uwsgi/uwsgi.log
log-reopen = true

vacuum = true

 

일반적으로 docker를 설치하면 docker-compose도 같이 설치되지만 ubuntu의 경우에는 따로 설치를 해주어야 한다.

sudo apt install docker-compose

 

docker-compose 사용법을 확인하고 싶으면 그 자체를 그대로 입력해보면 된다.

docker-compose

 

nginx 폴더로 가서 config 파일을 생성해준다.

cd nginx
vi nginx.conf
user root;
worker_processes auto;
pid /run/nginx.pid;

events {
  worker_connections 1024;
}

http {

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;
        gzip_disable "msile6";

        include /etc/nginx/sites-enabled/*;
}

nginx-app config 파일도 생성해준다.

vi nginx-app.conf
upstream uwsgi {
  server unix:/srv/docker-django/apps.sock;
}

server {
        listen 80;
        server_name localhost;
        charset utf-8;
        client_max_body_size 128M

        location / {
                uwsgi_pass uwsgi;
                include uwsgi_params;
        }

        location /media/ {
                alias /srv/docker-django/.media/;
        }

        location /static/ {
                alias /srv/docker-django/.static/;

        }
}

 

nginx 디렉토리내에서의 Dockerfile도 생성해준다.

FROM nginx:latest

COPY nginx.conf /etc/nginx/nginx.conf
COPY nginx-app.conf /etc/nginx/sites-availalbe/

RUN mkdir -p /etc/nginx/sites-enabled/\\
  && ln -s /etc/nginx/sites-available/nginx-app.conf /etc/nginx/sites-enable

EXPOSE 80
CMD ["nginx" , "-g" , "daemon off;"]

 

 

docker-nginx 라는 명으로 이미지를 빌드해주자.

docker build -t docker/nginx .

 

 

이미지가 빌드되어있는 것을 확인할 수 있다. python과 nginx는 docker에서 기본적으로 제공되는 이미지라고 생각하면된다.

이제 docker container를 실행시켜보자.

docker run -p 80:80 docker/nginx

 

(User가 80번 포트로오면 이 서버내의 80번 포트를 전송해주라는 의미이다.)

 

 

 

https://bit.ly/3L3avNW

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.