Docker là một dự án mã nguồn mở cung cấp nền tảng mở cho các nhà phát triển và quản trị viên hệ thống để xây dựng, đóng gói và chạy ứng dụng ở bất kỳ đâu dưới dạng một vùng chứa nhẹ. Docker tự động triển khai các ứng dụng bên trong các vùng chứa phần mềm.
Django là một khung ứng dụng web được viết bằng python theo kiến trúc MVC (Model-View-Controller). Nó có sẵn miễn phí và được phát hành theo giấy phép mã nguồn mở. Nó nhanh và được thiết kế để giúp các nhà phát triển đưa ứng dụng của họ lên mạng nhanh nhất có thể.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách tạo hình ảnh docker cho một dự án ứng dụng Django hiện có trong Ubuntu 16.04. Chúng ta sẽ tìm hiểu về việc docker hóa một ứng dụng Django python, sau đó triển khai ứng dụng dưới dạng vùng chứa tới môi trường docker bằng cách sử dụng tập lệnh docker-compose.
Để triển khai ứng dụng Django python của mình, chúng ta cần thêm hình ảnh docker. Chúng ta cần hình ảnh docker annginx cho máy chủ web và hình ảnh PostgreSQL cho cơ sở dữ liệu.
Trước khi cài đặt docker-ce, hãy cài đặt các phụ thuộc docker cần thiết bằng lệnh apt.
Bây giờ hãy thêm khóa docker và kho lưu trữ bằng cách chạy các lệnh bên dưới.
Cập nhật kho lưu trữ và cài đặt docker-ce.
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ docker và cho phép dịch vụ này khởi chạy mỗi khi khởi động hệ thống.
Tiếp theo, chúng ta sẽ thêm một người dùng mới có tên là 'omar' và thêm người dùng này vào nhóm docker.
Đăng nhập với tư cách là người dùng omar và chạy lệnh docker như hiển thị bên dưới.
Đảm bảo bạn nhận được thông báo hello-world từ Docker.
Quá trình cài đặt Docker-ce đã hoàn tất.
Tải xuống phiên bản mới nhất của docker-compose bằng lệnh curl vào thư mục '/usr/local/bin' và thực thi bằng chmod.
Chạy các lệnh bên dưới.
Bây giờ hãy kiểm tra phiên bản docker-compose.
Và hãy đảm bảo rằng bạn có phiên bản mới nhất của docker-compose 1.21.
Phiên bản docker-compose mới nhất hỗ trợ tệp compose phiên bản 3 đã được cài đặt.
Đăng nhập vào người dùng 'omar'.
Tạo thư mục mới 'guide01' và đi đến thư mục đó.
Bây giờ bên trong thư mục 'guide01', hãy tạo các thư mục mới 'project' và 'config'.
Lưu ý:
Dán cấu hình bên dưới.
Lưu và thoát.
Dán cấu hình sau vào đó.
Lưu và thoát.
Chạy lệnh bên dưới.
Bây giờ hãy dán tập lệnh Dockerfile bên dưới.
Lưu và thoát.
Lưu ý:
Chúng tôi muốn xây dựng các hình ảnh Docker cho dự án Django của mình dựa trên Alpine Linux, kích thước nhỏ nhất của Linux. Dự án Django của chúng tôi sẽ chạy Alpine Linux với python 3.5 được cài đặt trên đó và thêm gói postgresql-dev để hỗ trợ cơ sở dữ liệu PostgreSQL. Sau đó, chúng ta sẽ cài đặt tất cả các gói python được liệt kê trong tệp 'requirements.txt' bằng lệnh pip python và tạo '/src' mới cho dự án của chúng ta.
Dán cấu hình sau vào đó.
Lưu và thoát.
Lưu ý:
Với tập lệnh tệp docker-compose này, chúng ta sẽ tạo ba dịch vụ. Tạo dịch vụ cơ sở dữ liệu có tên 'db' bằng PostgreSQL alpine Linux, tạo lại dịch vụ 'nginx' bằng Nginx alpine Linux và tạo vùng chứa python Django của chúng tôi bằng hình ảnh docker tùy chỉnh được tạo từ Dockerfile của chúng tôi.
Đi tới thư mục 'project' và chỉnh sửa cài đặt ứng dụng 'settings.py'.
Lưu ý:
Chúng tôi sẽ triển khai ứng dụng Django đơn giản có tên là ứng dụng 'hello_django'.
Trên dòng 'ALLOW_HOSTS', thêm tên dịch vụ 'web'.
Bây giờ hãy thay đổi cài đặt cơ sở dữ liệu. Chúng tôi sẽ sử dụng cơ sở dữ liệu PostgreSQL chạy như một dịch vụ có tên là 'db' với người dùng và mật khẩu mặc định.
Và đối với thư mục cấu hình 'STATIC_ROOT', hãy thêm dòng này vào cuối dòng của tệp.
Lưu và thoát.
Bây giờ chúng ta đã sẵn sàng để xây dựng và chạy dự án Django dưới docker container.
Đi tới thư mục 'guide01'.
Bây giờ hãy xây dựng hình ảnh Docker bằng lệnh docker-compose.
Khởi động tất cả các dịch vụ bên trong tập lệnh docker-compose.
Chờ vài phút để Docker dựng hình ảnh Python của chúng ta và tải xuống hình ảnh docker nginx và postgresql.
Khi hoàn tất, hãy kiểm tra container đang chạy và liệt kê hình ảnh docker trên hệ thống bằng các lệnh sau.
Và bây giờ bạn sẽ có ba container đang chạy và danh sách hình ảnh Docker trên hệ thống như hiển thị bên dưới.
Ứng dụng Python Django của chúng ta hiện đang chạy bên trong container docker và hình ảnh docker cho dịch vụ của chúng ta đã được tạo.
Bây giờ bạn sẽ nhận được trang chủ Django mặc định.
Tiếp theo, hãy kiểm tra trang quản trị bằng cách thêm đường dẫn '/admin' vào URL.
Và bạn sẽ thấy trang đăng nhập quản trị Django.
Ứng dụng Dockerizing Python Django đã hoàn tất thành công.
Django là một khung ứng dụng web được viết bằng python theo kiến trúc MVC (Model-View-Controller). Nó có sẵn miễn phí và được phát hành theo giấy phép mã nguồn mở. Nó nhanh và được thiết kế để giúp các nhà phát triển đưa ứng dụng của họ lên mạng nhanh nhất có thể.
Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách tạo hình ảnh docker cho một dự án ứng dụng Django hiện có trong Ubuntu 16.04. Chúng ta sẽ tìm hiểu về việc docker hóa một ứng dụng Django python, sau đó triển khai ứng dụng dưới dạng vùng chứa tới môi trường docker bằng cách sử dụng tập lệnh docker-compose.
Để triển khai ứng dụng Django python của mình, chúng ta cần thêm hình ảnh docker. Chúng ta cần hình ảnh docker annginx cho máy chủ web và hình ảnh PostgreSQL cho cơ sở dữ liệu.
Chúng ta sẽ làm gì?
- Cài đặt Docker-ce
- Cài đặt Docker-compose
- Cấu hình môi trường dự án
- Xây dựng và chạy
- Kiểm tra
Bước 1 - Cài đặt Docker-ce
Trong hướng dẫn này, chúng ta sẽ cài đặt phiên bản cộng đồng docker-ce từ kho lưu trữ docker. Chúng tôi sẽ cài đặt docker-ce community edition và docker-compose hỗ trợ tệp compose phiên bản 3.Trước khi cài đặt docker-ce, hãy cài đặt các phụ thuộc docker cần thiết bằng lệnh apt.
Mã:
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
Mã:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Cập nhật kho lưu trữ và cài đặt docker-ce.
Mã:
sudo apt update
sudo apt install -y docker-ce
Mã:
systemctl start docker
systemctl enable docker
Mã:
useradd -m -s /bin/bash omar
usermod -a -G docker omar
Đăng nhập với tư cách là người dùng omar và chạy lệnh docker như hiển thị bên dưới.
Mã:
su - omar
docker run hello-world
Quá trình cài đặt Docker-ce đã hoàn tất.
Bước 2 - Cài đặt Docker-compose
Trong hướng dẫn này, chúng ta sẽ sử dụng hỗ trợ docker-compose mới nhất cho tệp compose phiên bản 3. Chúng ta sẽ cài đặt docker-compose theo cách thủ công.Tải xuống phiên bản mới nhất của docker-compose bằng lệnh curl vào thư mục '/usr/local/bin' và thực thi bằng chmod.
Chạy các lệnh bên dưới.
Mã:
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Mã:
phiên bản docker-compose
Phiên bản docker-compose mới nhất hỗ trợ tệp compose phiên bản 3 đã được cài đặt.
Bước 3 - Cấu hình Môi trường Dự án
Trong bước này, chúng ta sẽ cấu hình môi trường dự án python Django. Chúng ta sẽ tạo thư mục mới 'guide01' và biến nó thành thư mục chính cho các tệp dự án của chúng ta, chẳng hạn như Dockerfile, dự án Django, tệp cấu hình nginx, v.v.Đăng nhập vào người dùng 'omar'.
Mã:
su - omar
Mã:
mkdir -p guide01
cd guide01/
Mã:
mkdir project/ config/
- Thư mục 'project': Tất cả các tệp dự án python Django của chúng ta sẽ được đặt trong thư mục đó.
- Thư mục 'config': Thư mục cho các tệp cấu hình dự án, bao gồm tệp cấu hình nginx, tệp yêu cầu pip python, v.v.
Tạo một tệp requirements.txt mới
Tiếp theo, tạo tệp mới 'requirements.txt' bên trong thư mục 'config' bằng lệnh vim.
Mã:
vim config/requirements.txt
Mã:
Django==2.0.4
gunicorn==19.7.0
psycopg2==2.7.4
Tạo tệp máy chủ ảo Nginx django.conf
Trong thư mục config, tạo thư mục cấu hình 'nginx' và thêm tệp cấu hình máy chủ ảo django.conf.
Mã:
mkdir -p config/nginx/
vim config/nginx/django.conf
Mã:
web ngược dòng {
ip_hash;
web máy chủ:8000;
}
# cổng thông tin
máy chủ {
vị trí / {
proxy_pass http://web/;
}
lắng nghe 8000;
tên máy chủ localhost;
vị trí /static {
tự động lập chỉ mục;
bí danh /src/static/;
}
}
Tạo Dockerfile
Tạo 'Dockerfile' mới bên trong thư mục 'guide01'.Chạy lệnh bên dưới.
Mã:
vim Dockerfile
Mã:
FROM python:3.5-alpine
ENV PYTHONUNBUFFERED 1
CHẠY apk update && \
apk add --virtual build-deps gcc python-dev musl-dev && \
apk add postgresql-dev bash
RUN mkdir /config
ADD /config/requirements.txt /config/
RUN pip install -r /config/requirements.txt
RUN mkdir /src
WORKDIR /src
Lưu ý:
Chúng tôi muốn xây dựng các hình ảnh Docker cho dự án Django của mình dựa trên Alpine Linux, kích thước nhỏ nhất của Linux. Dự án Django của chúng tôi sẽ chạy Alpine Linux với python 3.5 được cài đặt trên đó và thêm gói postgresql-dev để hỗ trợ cơ sở dữ liệu PostgreSQL. Sau đó, chúng ta sẽ cài đặt tất cả các gói python được liệt kê trong tệp 'requirements.txt' bằng lệnh pip python và tạo '/src' mới cho dự án của chúng ta.
Tạo tập lệnh Docker-compose
Tạo tệp 'docker-compose.yml' trong thư mục 'guide01' bằng lệnh vim bên dưới.
Mã:
vim docker-compose.yml
Mã:
version: '3'
services:
db:
image: postgres:10.3-alpine
container_name: postgres01
nginx:
image: nginx:1.13-alpine
container_name: nginx01
ports:
- "8000:8000"
volumes:
- ./project:/src
- ./config/nginx:/etc/nginx/conf.d
depend_on:
- web
web:
build: .
container_name: django01
command: bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py collectstatic --noinput && gunicorn hello_django.wsgi -b 0.0.0.0:8000"
depend_on:
- db
volumes:
- ./project:/src
expose:
- "8000"
restart: always
Lưu ý:
Với tập lệnh tệp docker-compose này, chúng ta sẽ tạo ba dịch vụ. Tạo dịch vụ cơ sở dữ liệu có tên 'db' bằng PostgreSQL alpine Linux, tạo lại dịch vụ 'nginx' bằng Nginx alpine Linux và tạo vùng chứa python Django của chúng tôi bằng hình ảnh docker tùy chỉnh được tạo từ Dockerfile của chúng tôi.
Cấu hình dự án Django
Sao chép các tệp dự án Django của bạn vào thư mục 'project'.
Mã:
cd ~/django
cp -r * ~/guide01/project/
Mã:
cd ~/guide01/project/
vim hello_django/settings.py
Chúng tôi sẽ triển khai ứng dụng Django đơn giản có tên là ứng dụng 'hello_django'.
Trên dòng 'ALLOW_HOSTS', thêm tên dịch vụ 'web'.
Mã:
ALLOW_HOSTS = ['web']
Mã:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
Mã:
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Bây giờ chúng ta đã sẵn sàng để xây dựng và chạy dự án Django dưới docker container.
Bước 4 - Xây dựng và chạy hình ảnh Docker
Trong bước này, chúng ta muốn xây dựng một hình ảnh Docker cho dự án Django của mình bằng cách sử dụng cấu hình trên thư mục 'guide01'.Đi tới thư mục 'guide01'.
Mã:
cd ~/guide01/
Mã:
docker-compose build
Khởi động tất cả các dịch vụ bên trong tập lệnh docker-compose.
Mã:
docker-compose up -d
Khi hoàn tất, hãy kiểm tra container đang chạy và liệt kê hình ảnh docker trên hệ thống bằng các lệnh sau.
Mã:
docker-compose ps
hình ảnh docker-compose
Ứng dụng Python Django của chúng ta hiện đang chạy bên trong container docker và hình ảnh docker cho dịch vụ của chúng ta đã được tạo.
Bước 5 - Kiểm tra
Mở trình duyệt web của bạn và nhập địa chỉ máy chủ có cổng 8000, của tôi là:Bây giờ bạn sẽ nhận được trang chủ Django mặc định.
Tiếp theo, hãy kiểm tra trang quản trị bằng cách thêm đường dẫn '/admin' vào URL.
Và bạn sẽ thấy trang đăng nhập quản trị Django.
Ứng dụng Dockerizing Python Django đã hoàn tất thành công.