SlideShare une entreprise Scribd logo
1  sur  123
Télécharger pour lire hors ligne
raccoonyy
raccoonyy
raccoony @ Modern Server Lecture
ODK Media
https://44bits.io / https://stdout.fm
https://raccoonyy.github.io
•
$ docker pull nginx
• git clone https://github.com/raccoonyy/
django-dockerizing
• cd django-dockerizing
• docker run --rm 

-v $(pwd)/django:/usr/src/app 

python:3 bash
• cd /usr/src/app
• (Windows $(pwd) %cd%)
.
├── Dockerfile
└── django
├── api
│   ├── apps.py
│   └── views.py
├── manage.py
├── requirements.txt
└── sample
├── settings.py
├── urls.py
└── wsgi.py
• pip install -r requirements.txt
• python manage.py collectstatic
• sample/settings.py
• DEBUG=False

DEBUG=os.environ.get('DEBUG', True)
• sample/settings.py
• ALLOWED_HOST = ('*', )

ALLOWED_HOST = (os.environ.get('HOST',
'*'), )
• sample/settings.py
• API_HOST = 'localhost:8000'

API_HOST = os.environ.get('API_HOST',
'localhost:8000')
• gunicorn sample.wsgi
• EMAIL_BACKEND
• SECRET_KEY
• ...
• pip install -r requirements.txt
• python manage.py collectstatic
• # sample/settings.py

DEBUG

ALLOWED_HOST

API_HOST
• gunicorn sample.wsgi
FROM python:3.7.3
WORKDIR /usr/src/app

COPY django ./
RUN pip install -r requirements.txt

RUN python manage.py collectstatic --noinput
CMD ["gunicorn", "sample.wsgi", "--bind=0:8000"]
• docker build -t docker-sample .
• docker run -it -p 8000:8000 docker-sample
• 13.125.183.70:8000/api/
• 13.125.183.70:8000/api/
database/
• 13.125.183.70:8000/api/message/
• Ctrl + C
$ docker ps

CONTAINER ID IMAGE ...

95bbb55fb111 docker-sample ...
$ docker kill 95bbb55fb111
$ docker rm 95bbb55fb111
$ docker run -d --rm -p 8000:8000 

docker-sample

...

$ open localhost:8000
• http://IP:8000/admin/
$ docker exec --rm docker-sample 

./manage.py migrate


$ docker exec -it --rm docker-sample 

./manage.py createsuperuser
Username (leave blank to use 'root'):
• http://IP:8000/admin/
Django
8000
HOST_IP
db.sqlite3
$ docker kill 95bbb55fb111
$ docker run -d --rm -p 8000:8000 

docker-sample

...

IP:8000
• http://IP:8000/admin/
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
: /usr/src/app/db.sqlite3
$ docker ps

CONTAINER ID IMAGE ...

ABCD1234EFGH docker-sample ...
$ docker kill ABCD1234EFGH
$ docker run -d --rm -p 8000:8000 

-v $(pwd)/django:/usr/src/app/ 

docker-sample
$ docker exec --rm docker-sample 

./manage.py migrate


$ docker exec -it --rm docker-sample 

./manage.py createsuperuser
Username (leave blank to use 'root'):
Django
db.sqlite3/usr/src/app/db.sqlite3
•
•
$ docker run -d --rm -p 8000:8000 

-v $(pwd)/django:/usr/src/app/ 

docker-sample
# bit.ly/msl-docker-compose-install
$ sudo curl -L "https://github.com/docker/
compose/release/download/1.24.0/docker-
compose-$(uname -s)-$(uname -m)" -o /usr/
local/bin/docker-compose
# ~/.bashrc 

alias dco='docker-compose'
# docker-compose.yml
version: '3'
services:
django:
image: docker-sample
ports:
- "8000:8000"
volumes:
- ./django:/usr/src/app
$ docker run -d --rm 

-p 8000:8000 

-v $(pwd)/django:/usr/src/app/ 

docker-sample
•
•
•
•
•
# docker-compose.yml

services:

django:

image: docker-sample

ports:

- "8000:"8000"

volumes:

- ./django:/usr/src/app
$ docker-compose up -d (dco up -d)
...
$ docker-compose down (dco down)
...
•
•
$ docker run -p 60080:80 nginx
version: '3'
services:
nginx:
image: nginx
ports:
- 60080:80
•
•
•
version: '3'
services:
mysql:
image: mysql
error: database is uninitialized and
password option is not specified
You need to specify one of
MYSQL_ROOT_PASSWORD,
MYSQL_ALLOW_EMPTY_PASSWORD and
MYSQL_RANDOM_ROOT_PASSWORD
version: '3'
services:
mysql:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD:mypassword
version: '3'
services:
wordpress:
image: wordpress:latest
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "60000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
•
•
•
•
•
(docker-sample )
$ docker run -d --rm postgres
$ docker run -d --rm postgres

2603f8e32feecb5eb0cae...
$ docker logs -f 2603f
...
$ docker rm -f {CONTAINER_ID}
$ docker run -d --rm -p 5432:5432 postgres

$ docker rm -f {CONTAINER_ID}
$ docker run -d --rm -p 5432:5432 postgres

ad45e98618531ee693cc3...
$ docker logs ad45e

...
PostgreSQL init process complete; ready for
start up.
... listening on IPv4 address "0.0.0.0",
port 5432
$ docker rm -f {CONTAINER_ID}
$ docker run -d --rm -p 5432:5432 postgres

ad45e98618531ee693cc3...
$ telnet 0 5432

Trying 0.0.0.0...

Connected to 0.

Escape character is '^]'.
telnet> quit
$ docker run -d --rm 

-p 5432:5432 

-v $(pwd)/data:/var/lib/postgresql/data  

postgres
•
•
...
****************************************************
WARNING: No password has been set for the database.
This will allow anyone with access to the
Postgres port to access your database. In
Docker's default configuration, this is
effectively any other container on the same
system.
Use "-e POSTGRES_PASSWORD=password" to set
it in "docker run".
****************************************************
...
$ docker run -d 

-p 5432:5432 

-e POSTGRES_PASSWORD=rootpassword 

-v $(pwd)/data:/var/lib/postgresql/data  

postgres
• https://hub.docker.com/_/
postgres
$ docker run -d 

-p 5432:5432 

-e POSTGRES_PASSWORD=rootpassword 

-v $(pwd)/data:/var/lib/postgresql/data  

postgres
•
$ docker run -d 

-p 5432:5432 

-e POSTGRES_PASSWORD=rootpassword 

-v $(pwd)/data:/var/lib/postgresql/data  

postgres
# ./docker-compose.yml
version: '3'



services:

db:

image: postgres

environment:

- POSTGRES_PASSWORD=rootpassword

volumes:

- ./data:/var/lib/postgres/data

ports:

- 5432:5432
• : docker-compose up -d
• : docker-compose ps
• : docker-compose logs
• : docker-compose down
• : docker-compose up -d
• -d
• : docker-compose ps
• : docker-compose logs -f
• -f
• : docker-compose down
•
• ./data
•
version: '3'



volumes:

postgres_data: {}



services:

db:

image: postgres

...

volumes:

- postgres_data:/var/lib/postgres/data
postgres
/var/lib/postgres/data
postgres_data
•
• docker volume ls
• docker volume ls | grep postgres
• docker-compose
• docker-compose down -v
version: '3'

...

services:

db:

image: postgres

environment:

- POSTGRES_PASSWORD=rootpassword

- POSTGRES_USER=django

- POSTGRES_PASSWORD=django_password

- POSTGRES_DB=djangodb

volumes:

...
•
db:

...

ports:

- 15432:5432

...
$ telnet 0 15432
Django
8000
HOST_IP
db.sqlite3
Django Postgres
5432
8000
HOST_IP
$ docker build -t docker-sample .
$ docker run -d --rm -p 8000:8000 docker-sample
# http://bit.ly/msl-django-database
# django/sample/settings.py
DATABASES = 

'default': {

'ENGINE': 'django.db.backends.postgresql',

'NAME': os.environ.get('DJANGO_DB_NAME', 

'djangodb'),

'USER': os.environ.get('DJANGO_DB_USERNAME', 

'django'),

'PASSWORD': os.environ.get('DJANGO_DB_PASSWORD', 

'django_password'),

'HOST': os.environ.get('DJANGO_DB_HOST', 'db'),

'PORT': os.environ.get('DJANGO_DB_PORT', '5432'),

}

}
# django/requirements.txt
...
psycopg2-binary
# http://bit.ly/msl-postgres-docker
$ docker run -d 

--name db 

-p 5432:5432 

-e POSTGRES_DB=djangodb 

-e POSTGRES_USER=django 

-e POSTGRES_PASSWORD=djangopassword 

-v $(pwd)/data:/var/lib/postgresql/data  

postgres
$ docker run -d --rm 

-p 8000:8000 

--link db:db 

docker-sample
$ docker run -d --rm 

-p 8000:8000 

--link ABCD1234EFGH:db 

docker-sample
# Dockerfile
...
RUN apt update && apt install -y postgres-
client
RUN pip install ...
•
docker run -d --rm 

-p 8000:8000 

--link db:db 

-v $(pwd)/django:/usr/src/app 

docker-sample
•
• PYTHONUNBUFFERED
# Dockerfile

FROM python:3


ENV PYTHONUNBUFFERED 1

...
$ docker build -t docker-sample .
$ docker run -d --rm 

-p 8000:8000 

--link db:db 

-v $(pwd)/django:/usr/src/app 

docker-sample
$ docker run -d 

--name db 

-p 5432:5432 

-e POSTGRES_DB=djangodb 

-e POSTGRES_USER=django 

-e POSTGRES_PASSWORD=djangopassword 

-v $(pwd)/data:/var/lib/postgresql/data  

postgres



$ docker run -d --rm 

-p 8000:8000 

--link db:db 

-v $(pwd)/django:/usr/src/app 

docker-sample
# docker-compose.yml
version: '3'



services:

db:

...

django:

image: docker-sample

links:

- db:db

ports:

- 8000:8000

volumes:

- ./django:/usr/src/app
Django Postgres
*
8000
HOST_IP
docker-compose

bridge network
•
•
•
•
# docker-compose.yml

...

django

# image: django-sample

build:

context: .

dockerfile: ./compose/django/
Dockerfile-dev

...
# ./compose/django/Dockerfile-dev
FROM python:3



ENV PYTHONUNBUFFERED 1



RUN apt update && apt install -y postgresql-client



WORKDIR /usr/src/app

COPY django ./

COPY django/requirements.txt ./

RUN pip install -r requirements.txt

RUN python manage.py collectstatic --noinput



CMD ["gunicorn", "sample.wsgi", "--bind=0:8000"]
•
http://bit.ly/msl-django-postgres
version: '3'



services:

  django:

   build:

context: .

dockerfile: ./compose/django/Dockerfile-dev

links:

- db:db

ports:

- 8000:8000

volumes:

- ./django:/usr/src/app

restart: always
...
db:

image: postgres

environment:

- POSTGRES_PASSWORD=rootpassword

- POSTGRES_USER=django

- POSTGRES_PASSWORD=django_password

- POSTGRES_DB=djangodb

volumes:

- postgres_data:/var/lib/postgres/data



volumes:

postgres_data: {}








•
•
•
•
•
•
•
•
•
•
•
•
http://bit.ly/msl-practice-guestbook
version: '3'



services:

 frontend:

   image: raccoony/guestbook-frontend:latest

   ports:

     - "60081:8080"

   environment:

     - PORT=8080

     - GUESTBOOK_API_ADDR=backend:5000

   depends_on:

     - backend



 backend:

   image: raccoony/guestbook-backend:latest

   environment:

     - PORT=5000

     - GUESTBOOK_DB_ADDR=mongodb:27017

   depends_on:

     - mongodb
 backend:

   image: raccoony/guestbook-backend:latest

   environment:

     - PORT=5000

     - GUESTBOOK_DB_ADDR=mongodb:27017

   depends_on:

     - mongodb



 mongodb:

   image: mongo:4

   volumes:

     - mongo_data:/data/db



volumes:

 mongo_data:{}
• exec
• run
• build
docker-compose run django ./manage.py
migrate
docker-compose run django bash
docker-compose exec django ./manage.py
check
docker-compose exec django bash
docker-compose build django
# ~/.bashrc 

alias dco='docker-compose'



alias dcb='docker-compose build'

alias dce='docker-compose exec'

alias dcps='docker-compose ps'

alias dcr='docker-compose run'

alias dcup='docker-compose up'

alias dcdn='docker-compose down'

alias dcl='docker-compose logs'

alias dclf='docker-compose logs -f'
raccoonyy@gmail.com
https://44bits.io
https://raccoonyy.github.io
raccoonyy
raccoonyy

Contenu connexe

Similaire à Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기

AWS와 Docker Swarm을 이용한 쉽고 빠른 컨테이너 오케스트레이션 - AWS Summit Seoul 2017
AWS와 Docker Swarm을 이용한 쉽고 빠른 컨테이너 오케스트레이션 - AWS Summit Seoul 2017AWS와 Docker Swarm을 이용한 쉽고 빠른 컨테이너 오케스트레이션 - AWS Summit Seoul 2017
AWS와 Docker Swarm을 이용한 쉽고 빠른 컨테이너 오케스트레이션 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018
Ortus Solutions, Corp
 

Similaire à Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기 (20)

AWS와 Docker Swarm을 이용한 쉽고 빠른 컨테이너 오케스트레이션 - AWS Summit Seoul 2017
AWS와 Docker Swarm을 이용한 쉽고 빠른 컨테이너 오케스트레이션 - AWS Summit Seoul 2017AWS와 Docker Swarm을 이용한 쉽고 빠른 컨테이너 오케스트레이션 - AWS Summit Seoul 2017
AWS와 Docker Swarm을 이용한 쉽고 빠른 컨테이너 오케스트레이션 - AWS Summit Seoul 2017
 
Docker, the Future of DevOps
Docker, the Future of DevOpsDocker, the Future of DevOps
Docker, the Future of DevOps
 
Docker Security workshop slides
Docker Security workshop slidesDocker Security workshop slides
Docker Security workshop slides
 
GDG Lima - Docker Compose
GDG Lima - Docker ComposeGDG Lima - Docker Compose
GDG Lima - Docker Compose
 
Into The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and dockerInto The Box 2018 Going live with commandbox and docker
Into The Box 2018 Going live with commandbox and docker
 
Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018Going live with BommandBox and docker Into The Box 2018
Going live with BommandBox and docker Into The Box 2018
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
A to Z of a Multi-platform Docker Swarm: Building, Shipping, and Running Mult...
A to Z of a Multi-platform Docker Swarm: Building, Shipping, and Running Mult...A to Z of a Multi-platform Docker Swarm: Building, Shipping, and Running Mult...
A to Z of a Multi-platform Docker Swarm: Building, Shipping, and Running Mult...
 
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...
From Arm to Z: Building, Shipping, and Running a Multi-platform Docker Swarm ...
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
 
Be a better developer with Docker (revision 3)
Be a better developer with Docker (revision 3)Be a better developer with Docker (revision 3)
Be a better developer with Docker (revision 3)
 
Using Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutionsUsing Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutions
 
Docker
DockerDocker
Docker
 
Troubleshooting Tips from a Docker Support Engineer
Troubleshooting Tips from a Docker Support EngineerTroubleshooting Tips from a Docker Support Engineer
Troubleshooting Tips from a Docker Support Engineer
 
Troubleshooting Tips from a Docker Support Engineer - Jeff Anderson, Docker
Troubleshooting Tips from a Docker Support Engineer - Jeff Anderson, DockerTroubleshooting Tips from a Docker Support Engineer - Jeff Anderson, Docker
Troubleshooting Tips from a Docker Support Engineer - Jeff Anderson, Docker
 
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea LuzzardiWhat's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
 
What's New in Docker 1.12 by Mike Goelzer and Andrea Luzzardi
What's New in Docker 1.12 by Mike Goelzer and Andrea LuzzardiWhat's New in Docker 1.12 by Mike Goelzer and Andrea Luzzardi
What's New in Docker 1.12 by Mike Goelzer and Andrea Luzzardi
 
Ruby on Rails and Docker - Why should I care?
Ruby on Rails and Docker - Why should I care?Ruby on Rails and Docker - Why should I care?
Ruby on Rails and Docker - Why should I care?
 

Plus de raccoony

Plus de raccoony (12)

How to survive in AWS re:Invent
How to survive in AWS re:InventHow to survive in AWS re:Invent
How to survive in AWS re:Invent
 
select-fix(일괄 바꿈) 프로젝트 소개
select-fix(일괄 바꿈) 프로젝트 소개select-fix(일괄 바꿈) 프로젝트 소개
select-fix(일괄 바꿈) 프로젝트 소개
 
Write The Docs 서울의 2019년 첫 밋업 소개 자료
Write The Docs 서울의 2019년 첫 밋업 소개 자료Write The Docs 서울의 2019년 첫 밋업 소개 자료
Write The Docs 서울의 2019년 첫 밋업 소개 자료
 
번역 작업의 지속 가능성을 높이는 CAT
번역 작업의 지속 가능성을 높이는 CAT번역 작업의 지속 가능성을 높이는 CAT
번역 작업의 지속 가능성을 높이는 CAT
 
한글 폰트 크기 문제를 테스트해봅니다
한글 폰트 크기 문제를 테스트해봅니다한글 폰트 크기 문제를 테스트해봅니다
한글 폰트 크기 문제를 테스트해봅니다
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
음향 기초 안내서
음향 기초 안내서음향 기초 안내서
음향 기초 안내서
 
인디자인을 활용한 자동 조판 실험
인디자인을 활용한 자동 조판 실험인디자인을 활용한 자동 조판 실험
인디자인을 활용한 자동 조판 실험
 
민주주의를 위한 대화, 소통, 참여, 협력의 기술
민주주의를 위한 대화, 소통, 참여, 협력의 기술민주주의를 위한 대화, 소통, 참여, 협력의 기술
민주주의를 위한 대화, 소통, 참여, 협력의 기술
 
(중학생도 이해하는) 에니그마의 작동 원리
(중학생도 이해하는) 에니그마의 작동 원리(중학생도 이해하는) 에니그마의 작동 원리
(중학생도 이해하는) 에니그마의 작동 원리
 
서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들서버 개발자가 되기 전에 알았으면 좋았을 것들
서버 개발자가 되기 전에 알았으면 좋았을 것들
 
Sublime Text 3 for python and django
Sublime Text 3 for python and djangoSublime Text 3 for python and django
Sublime Text 3 for python and django
 

Dernier

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssuser89054b
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
MsecMca
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
ankushspencer015
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Kandungan 087776558899
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Dernier (20)

Intro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdfIntro To Electric Vehicles PDF Notes.pdf
Intro To Electric Vehicles PDF Notes.pdf
 
Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
Unit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdfUnit 1 - Soil Classification and Compaction.pdf
Unit 1 - Soil Classification and Compaction.pdf
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
Thermal Engineering Unit - I & II . ppt
Thermal Engineering  Unit - I & II . pptThermal Engineering  Unit - I & II . ppt
Thermal Engineering Unit - I & II . ppt
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
AKTU Computer Networks notes --- Unit 3.pdf
AKTU Computer Networks notes ---  Unit 3.pdfAKTU Computer Networks notes ---  Unit 3.pdf
AKTU Computer Networks notes --- Unit 3.pdf
 
Thermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.pptThermal Engineering -unit - III & IV.ppt
Thermal Engineering -unit - III & IV.ppt
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Ramesh Nagar Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 

Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기