본문 바로가기
AWS/Part 2. Ch03 중규모 아키텍트

CH03_05 Nginx Docker Build

by Engineer-Lee 2022. 4. 27.
반응형

지금 시간에 만든 ec2 인스턴스에 접속하자

 

도커를 백그라운드로 실행시키기 위해서는

docker run -d -p 8000:8000 docker/django 명령어를 입력하자

 

어떤 도커의 컨테이너가 실행중인지는 docker ps 명령어로 볼 수 있다.

그리고 docker stop [컨테이너 ID] 를 입력해서 실행중인 도커 이미지를 끌 수 있다.

 

도커 이미지를 잠시 중지 시켜놓고 이번에는 Nginx 도커 이미지를 만들어보자

 

우선은 fastcampus_test폴더 안에 Dockerfile의 내용을 수정해야 한다.

맨 밑의 2줄은 필요가 없으므로 주석처리를 한다.

 

그 후 fastcampus 폴더 안에 vi uwsgi.ini 명령어로 파일을 하나 만든다.

파일안에 아래 내용을 붙여넣는다.

[uwsgi]

socket = /srv/docker-django/django.sock

master = true

 

processes = 1

threads = 2

 

chdir = /srv/docker-django

module = fastcampus_test.wsgi

 

logto = /var/log/uwsgi/uwsgi.log

log-reopen = true

 

vacuum =true

 

그리고 cd .. 를 두번 하고 docker-django폴더에 도커 compose를 다운 받기위해 
sudo curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 명령어를 입력한다.

 

 

그리고 docker compose의 권한을 설정해준다.

sudo chmod +x /usr/local/bin/docker-compose

 

 

이제 cd nginx로 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 "msie6";

 

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

}

 

 

또한 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/;

    }

}

 

 

그리고 fastcampus_test 폴더 안에서 도커파일을 만들었듯이 nginx폴더 안에도 도커파일을 만든다.

vi Dockerfile을 통해 파일을 만들고 안에 아래 내용을 입력한다.

 

FROM nginx:latest

 

COPY nginx.conf /etc/nginx/nginx.conf

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

 

RUN mkdir -p /etc/nginx/sites-enabled/\

    && ln -s /etc/nginx/sites-available/nginx-app.conf /etc/nginx/sites-enabled/

 

EXPOSE 80

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

 

 

 

이제 도커 이미지를 빌드해보자

docker build -t docker/nginx .

 

 

마지막으로 docker run -p 80:80 docker/nginx 을 입력하면

http://ec2-13-125-196-64.ap-northeast-2.compute.amazonaws.com/에 접속했을때 nginx가 실행되는걸 볼 수 있다.

 

반응형