본 문서는 패스트캠퍼스 ‘Web-Programming School’ 수업 자료를 바탕으로 작성되었습니다.
도커
(서비큘라 기술 블로그)[https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html]
도커 설치하기
도커는 Linux 컨테이너 기술이기 때문에 다른 운영체제의 경우 다른 방법으로 설치를 해야한다.
curl -fsSL https://get.docker.com/ | sudo sh
sudo 없이 사용하기
도커는 기본적으로 root 권한이 필요하기 때문에 sudo 없이 사용하려면 아래와 같이 사용자를 docker 그룹에 추가하자
>> sudo usermod -aG docker $USER # 현재 접속중인 사용자에게 권한주기
>> sudo usermod -aG docker your-user # your-user 사용자에게 권한주기
도커 파일 작성하기
.config
와 같은 위치에 Dockerfile
파일을 생성하자. 이미지를 만드는데 오래 걸리는 명령어의 경우 *.base
이런식으로 도커 파일을 분리하여 파일을 생성한다.
/* Dockerfile.base */
FROM python:3.6.4
RUN apt-get -y update
RUN apt-get -y dist-upgrade
COPY . /srv/project
WORKDIR /srv/project
RUN pip install -r requirements.txt
/* Dockerfile */
FROM ec2-deploy.base
도커 이미지 만들기
docker build -t <도커 이미지 이름> -f <실행할 도커 파일> <도커 파일 위치>
>> docker build -t ec2-deploy.base -f Dockerfile ~/OH_Team/ec-deploy
-t
: 도커 이미지 이름 설정을 위한 옵션-f
도커 이미지 리스트
매번 도커 이미지를 만들 때마다 이전에 도커 이미지를 덮어 씌우는 것이 아니라 새로운 이미지가 생성된다. 그래서 사용하지 않는 이미지는 개별적으로 삭제해야 한다.
>> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ec2-deploy.base latest 215974a714cb About a minute ago 732MB
도커 이미지 실행하기
Host(도커를 실행중인 컴퓨터) :8000
-p
Container (도커 이미지를 실행) :4567
docker run --rm -it -p 8000:4567 ec2-deploy /bin/bash
root@75ce82f84a1c:/srv/project#
root@75ce82f84a1c:/srv/project# cd app
root@75ce82f84a1c:/srv/project/app# export DJANGO_SETTINGS_MODULE=config.settings.dev
root@75ce82f84a1c:/srv/project/app# ./manage.py runserver 0:4567
-p
: 포트 옵션
도커에서 uwsgi 실행
supervisor
Supervisor 시스템은 유저가 UNIX와 유사한 운영 체제에서 여러 프로세스를 모니터하고 관리 할 수 있는 클라이언트/서버 시스템이다.
nginx
- nginx가 기본을 daemon으로 실행되는데 Supervisor를 사용하기 위해 몇가지 설정하자.
/* nginx.conf */
daemon off;
user root;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}