Contenu connexe Similaire à Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기 (20) Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기6. • 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%)
9. • pip install -r requirements.txt
• python manage.py collectstatic
15. • pip install -r requirements.txt
• python manage.py collectstatic
• # sample/settings.py
DEBUG
ALLOWED_HOST
API_HOST
• gunicorn sample.wsgi
17. • 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/
18. • Ctrl + C
$ docker ps
CONTAINER ID IMAGE ...
95bbb55fb111 docker-sample ...
$ docker kill 95bbb55fb111
$ docker rm 95bbb55fb111
21. $ docker run -d --rm -p 8000:8000
docker-sample
...
$ open localhost:8000
23. $ docker exec --rm docker-sample
./manage.py migrate
$ docker exec -it --rm docker-sample
./manage.py createsuperuser
Username (leave blank to use 'root'):
27. $ docker kill 95bbb55fb111
$ docker run -d --rm -p 8000:8000
docker-sample
...
IP:8000
29. DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
: /usr/src/app/db.sqlite3
31. $ 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
32. $ docker exec --rm docker-sample
./manage.py migrate
$ docker exec -it --rm docker-sample
./manage.py createsuperuser
Username (leave blank to use 'root'):
35. $ docker run -d --rm -p 8000:8000
-v $(pwd)/django:/usr/src/app/
docker-sample
54. 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
62. $ docker run -d --rm postgres
2603f8e32feecb5eb0cae...
$ docker logs -f 2603f
...
63. $ docker rm -f {CONTAINER_ID}
$ docker run -d --rm -p 5432:5432 postgres
64. $ 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
65. $ 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
68. $ docker run -d --rm
-p 5432:5432
-v $(pwd)/data:/var/lib/postgresql/data
postgres
•
•
69. ...
****************************************************
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".
****************************************************
...
70. $ docker run -d
-p 5432:5432
-e POSTGRES_PASSWORD=rootpassword
-v $(pwd)/data:/var/lib/postgresql/data
postgres
• https://hub.docker.com/_/
postgres
71. $ docker run -d
-p 5432:5432
-e POSTGRES_PASSWORD=rootpassword
-v $(pwd)/data:/var/lib/postgresql/data
postgres
72. •
$ docker run -d
-p 5432:5432
-e POSTGRES_PASSWORD=rootpassword
-v $(pwd)/data:/var/lib/postgresql/data
postgres
74. • : docker-compose up -d
• : docker-compose ps
• : docker-compose logs
• : docker-compose down
75. • : docker-compose up -d
• -d
• : docker-compose ps
• : docker-compose logs -f
• -f
• : docker-compose down
80. •
• docker volume ls
• docker volume ls | grep postgres
• docker-compose
• docker-compose down -v
87. $ docker build -t docker-sample .
$ docker run -d --rm -p 8000:8000 docker-sample
89. # 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'),
}
}
92. $ docker run -d --rm
-p 8000:8000
--link db:db
docker-sample
$ docker run -d --rm
-p 8000:8000
--link ABCD1234EFGH:db
docker-sample
95. docker run -d --rm
-p 8000:8000
--link db:db
-v $(pwd)/django:/usr/src/app
docker-sample
98. $ docker build -t docker-sample .
$ docker run -d --rm
-p 8000:8000
--link db:db
-v $(pwd)/django:/usr/src/app
docker-sample
99. $ 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
107. # ./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"]
110. version: '3'
services:
django:
build:
context: .
dockerfile: ./compose/django/Dockerfile-dev
links:
- db:db
ports:
- 8000:8000
volumes:
- ./django:/usr/src/app
restart: always
116. 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
122. # ~/.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'