Step1. Docker로 Nginx 서비스 띄우기
1 | docker pull nginx | cs |
그리고 run으로 실행시켜보면
1 | docker run --name nginx-server -d -p 80:80 nginx | cs |
127.0.0.1로 접속해보면 위 사진과 같이 잘 뜨는걸 확인 할 수 있다.
하지만 docker container로 nginx만 따로 띄우게 되면 다른 어플리케이션과 연동 시킬 때 container 간 연결을 맺어줘야(?)하는 번거로움이 있다. 또한 여러 어플리케이션이 상호작용하는 상황이라면 관리가 더욱 어려울 것이다.
Docker compose는 docker container 여럿을 띄워 관리하는 도구로서 하나의 파일 docker-compose.yml로서 여러 container의 설정을 관리할 수 있습니다. 이제 이를 활용해서 nginx + web을 띄워보도록 하겠습니다.
Step2. Docker compose 설치
1 2 | sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)"\ -o /usr/local/bin/docker-compose | cs |
실행파일에 대한 권한 변경하구요
1 | sudo chmod +x /usr/local/bin/docker-compose | cs |
아래와 같이 설치를 확인합니다.
1 2 3 | jckang@jckang:~/test/nginx-flask-test$ docker-compose --version docker-compose version 1.23.1, build b02f1306 | cs |
Step3. 나만의 Nginx image 만들기
1 2 3 4 5 6 7 8 9 10 11 12 | upstream app { server flask:5000; # 서버의 컨테이너 명 } server { listen 80; location / { proxy_pass http://app; } } | cs |
default.conf와 같은 경로에 Dockerfile을 만듭니다.
~/nginx/Dockerfile
1 2 3 4 5 | FROM nginx:latest COPY default.conf /etc/nginx/conf.d/default.conf CMD ["nginx", "-g", "daemon off;"] | cs |
Step1에서 받았던 이미지를 가져와 default.conf 파일만 교체해주고 nginx를 포그라운드로 실행시키는 이미지 파일입니다.
1 | docker build -t nginx:test . | cs |
이미지 빌드 합니다.
Step4. Docker compose 띄워보기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | version: '3' services: flask: container_name: flask image: "flask:test" ports: - "5000:5000" networks: - backend nginx: container_name: nginx image: "nginx:test" ports: - "80:80" networks: - backend networks: # 가장 기본적인 bridge 네트워크 backend: driver: bridge | cs |
version 3값은 아마 docker 특정버젼(?)에서 저렇게 해줘야 한다는 걸로 알고 있는데... 정확히는 잘.. ㅎㅎ
위와 같이 services에 두개의 컨테이너를 정의합니다.
flask는 web 어플리케이션이구요 포트는 5000번으로 정의했습니다.
nginx는 웹서버이고 step3에서 만들었던 걸 80번 포트로 정의했습니다.
아래 명령어로 띄어봅시다.
1 | docker-compose up | cs |
1 2 3 4 5 6 7 8 9 10 11 | jckang@jckang:~/test/nginx-flask-test$ docker-compose up Creating flask ... done Creating nginx ... done Attaching to flask, nginx flask | * Serving Flask app "app" (lazy loading) flask | * Environment: production flask | WARNING: Do not use the development server in a production environment. flask | Use a production WSGI server instead. flask | * Debug mode: off flask | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) | cs |
띄워진 걸 확인 할 수 있다. 그리고 127.0.0.1/ 로 접근해보면
위같이 web app으로 요청이 간것을 확인 할 수 있다.
'개발 이야기 > Docker' 카테고리의 다른 글
Docker 명령어 정리 (0) | 2019.07.27 |
---|---|
Docker 빌드 시 소스파일 git으로 얻어오기 (0) | 2019.07.21 |
Docker 권한 일반사용자에게 주기 (0) | 2018.09.08 |
Docker 삭제하기 (0) | 2018.09.08 |
Docker 설치하기 (0) | 2018.09.08 |