disqus: brainbackdoor | false
kakaoChannel: false
floatFirstTOC: right
<aside> 📌 컨테이너를 학습하고 3 tier로 운영환경을 구성해봅니다. 개발 환경을 구성해보고 지속적 통합을 경험해봅니다.
</aside>
A. 도커 설치
$ sudo apt-get update && \\
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \\
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo apt-key add - && \\
sudo apt-key fingerprint 0EBFCD88 && \\
sudo add-apt-repository "deb [arch=amd64] <https://download.docker.com/linux/ubuntu> $(lsb_release -cs) stable" && \\
sudo apt-get update && \\
sudo apt-get install -y docker-ce && \\
sudo usermod -aG docker ubuntu && \\
sudo curl -L "<https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$>(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \\
sudo chmod +x /usr/local/bin/docker-compose && \\
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
B. 컨테이너 실행
Dockerfile
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
nginx.conf
events {}
http {
upstream app {
server 172.17.0.1:8080;
}
server {
listen 80;
location / {
proxy_pass <http://app>;
}
}
}
실행
$ docker build -t brainbackdoor/reverse-proxy .
$ docker run -d -p 80:80 brainbackdoor/reverse-proxy
$ curl <http://localhost>
서버의 보안과 별개로 서버와 클라이언트간 통신상의 암호화가 필요합니다. 평문으로 통신할 경우, 패킷을 스니핑할 수 있기 때문입니다.
letsencrypt를 활용하여 무료로 TLS 인증서를 사용할 수 있어요.
$ docker run -it --rm --name certbot \\
-v '/etc/letsencrypt:/etc/letsencrypt' \\
-v '/var/lib/letsencrypt:/var/lib/letsencrypt' \\
certbot/certbot certonly -d 'yourdomain.com' --manual --preferred-challenges dns --server <https://acme-v02.api.letsencrypt.org/directory>