Docker soạn python

Để thay vì chúng ta xây dựng, hãy bắt đầu từng vùng chứa một với Docker, bây giờ chúng ta có thể sử dụng trình soạn thảo Docker Compose. Nó giúp đơn giản hóa và tăng tốc quá trình xây dựng ứng dụng sử dụng Docker. Trong bài viết này vinasupport. com sẽ mô tả cơ bản nhất về Docker Compose

Docker soạn python

Docker soạn là gì?

Docker Compose là một công cụ được sử dụng để định nghĩa và chạy nhiều ứng dụng Docker Container tại cùng một thời điểm. Bạn sử dụng cấu hình tệp YAML để xác định các dịch vụ của ứng dụng. Và với chỉ 1 lệnh duy nhất, các bạn sẽ tạo và khởi động tất cả các dịch vụ từ tệp cấu hình của mình

Cài đặt Docker Compose

Mặc dù nó không được cài đặt sẵn trong các hệ điều hành và chúng ta phải tiến hành cài đặt nó

Trên Ubuntu/Debian

sudo apt -y install docker-compose

Hoặc cài đặt từ Github

curl -SL https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose

Xác nhận phiên bản docker-compose

[[email protected] ~]:~$ docker-compose --version
docker-compose version 1.29.2, build unknown

Hướng dẫn sử dụng docker soạn

Chúng ta cần tạo file docker-compose. yml để chứa các dịch vụ cho ứng dụng của chúng tôi

Khởi tạo dịch vụ với Docker Compose

Đây là 1 ví dụ về việc tạo 1 dịch vụ có tên là vinasupport sử dụng hình ảnh “hello-world”. Chỉnh sửa tệp docker-compose. yml as after

vinasupport:
    image: hello-world

Build và start container

Nó sẽ tự động kéo hình ảnh từ repo về nếu chưa có và tự động tạo các vùng chứa đã được định nghĩa trong tệp docker-compose. yml

docker-compose up

Docker soạn python

Trường hợp bạn đã chỉnh sửa tệp thiết kế docker-compose. yml thì sử dụng thêm tham số -d để xây dựng lại các vùng chứa

Docker là một công cụ chứa được sử dụng để tạo ra các môi trường ứng dụng bị cô lập, có thể tái tạo. Phần này trình bày chi tiết cách chứa Dự án Django, Postgres và Redis để phát triển cục bộ cùng với việc phân phối ngăn xếp lên đám mây thông qua Docker Compose và Docker Machine

Tiền thưởng miễn phí. Nhấp vào đây để tải xuống khung dự án "Docker + Django, PostgreSQL & Redis" với mã nguồn đầy đủ mà bạn có thể sử dụng làm nền tảng cho các ứng dụng Python của riêng mình

Cuối cùng, ngăn xếp sẽ bao gồm một vùng chứa riêng cho từng dịch vụ

  • 1 vùng chứa web/Django
  • 1 vùng chứa nginx
  • 1 thùng chứa Postgres
  • 1 thùng chứa Redis
  • 1 thùng chứa dữ liệu
Docker soạn python

cập nhật

  • 04/01/2019. Cập nhật phiên bản mới nhất của Docker - Docker client (v18. 09. 2), Docker soạn thảo (v1. 23. 2) và Máy Docker (v0. 16. 1) - và Python (v3. 7. 3). Cảm ơn Florian Dahlitz
  • 18/04/2016. Đã thêm khối lượng dữ liệu được đặt tên vào vùng chứa Postgres và Redis
  • 13/04/2016. Đã thêm Hộp công cụ Docker và cũng được cập nhật lên các phiên bản mới nhất của Docker - Docker client (v1. 10. 3), Docker soạn thảo (v1. 6. 2) và Máy Docker (v0. 6. 0)
  • 27/12/2015. Cập nhật phiên bản mới nhất của Docker - Docker client (v1. 9. 1), Docker soạn thảo (v1. 5. 2) và Máy Docker (v0. 5. 4) - và Python (v3. 5)

Quan tâm đến việc tạo một môi trường tương tự cho Flask?

Thiết lập cục bộ

Cùng với Docker (v18. 09. 2) chúng tôi sẽ sử dụng -

  • Docker Compose (v1. 23. 2) để sắp xếp một ứng dụng nhiều vùng chứa thành một ứng dụng duy nhất và
  • Máy Docker (v0. 16. 1) để tạo máy chủ Docker cả cục bộ và trên đám mây

Nếu bạn đang chạy phiên bản Mac OS X hoặc Windows cũ hơn, hãy tải xuống và cài đặt Hộp công cụ Docker để nhận tất cả các công cụ cần thiết. Nếu không, hãy làm theo hướng dẫn tại đây và tại đây để cài đặt Docker Compose và Machine tương ứng

Sau khi hoàn tất, hãy kiểm tra cài đặt

$ docker-machine version
docker-machine version 0.16.1, build cce350d7
$ docker-compose version
docker-compose version 1.23.2, build 1110ad01
CPython version: 3.7.3

Tiếp theo sao chép dự án từ kho lưu trữ hoặc tạo dự án của riêng bạn dựa trên cấu trúc dự án được tìm thấy trên kho lưu trữ

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css

Bây giờ chúng tôi đã sẵn sàng để thiết lập và chạy các vùng chứa…

Loại bỏ các quảng cáo

máy docker

Để khởi động Docker Machine, chỉ cần điều hướng đến thư mục gốc của dự án rồi chạy

$ docker-machine create -d virtualbox dev;
Running pre-create checks...
Creating machine...
(dev) Creating VirtualBox VM...
(dev) Creating SSH key...
(dev) Starting the VM...
(dev) Check network to re-create if needed...
(dev) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine
running on this virtual machine, run: docker-machine env dev

Lệnh

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
8 thiết lập một “Máy” mới (được gọi là dev) để phát triển Docker. Về bản chất, nó đã khởi động một máy ảo với ứng dụng khách Docker đang chạy. Bây giờ chỉ cần trỏ Docker vào máy dev

$ eval $(docker-machine env dev)

Chạy lệnh sau để xem các Máy hiện đang chạy

curl -SL https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
0

Tiếp theo, hãy kích hoạt các thùng chứa bằng Docker Compose và khởi động Django, Postgres và Redis

Docker Soạn

Chúng ta hãy xem docker-compose. tập tin yml

curl -SL https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
1

Ở đây, chúng tôi đang xác định bốn dịch vụ - web, nginx, postgres và redis

  1. Đầu tiên, dịch vụ web được xây dựng thông qua các hướng dẫn trong Dockerfile trong thư mục “web” - nơi môi trường Python được thiết lập, các yêu cầu được cài đặt và ứng dụng Django được kích hoạt trên cổng 8000. Cổng đó sau đó được chuyển tiếp đến cổng 80 trên môi trường máy chủ - e. g. , máy Docker. Dịch vụ này cũng thêm các biến môi trường vào vùng chứa được xác định trong. tập tin env
  2. Dịch vụ nginx được sử dụng cho proxy ngược để chuyển tiếp các yêu cầu tới Django hoặc thư mục tệp tĩnh
  3. Tiếp theo, dịch vụ postgres được xây dựng từ hình ảnh PostgreSQL chính thức từ Docker Hub, cài đặt Postgres và chạy máy chủ trên cổng mặc định 5432. Bạn có nhận thấy khối lượng dữ liệu?
  4. Tương tự như vậy, dịch vụ redis sử dụng hình ảnh Redis chính thức để cài đặt Redis và sau đó dịch vụ được chạy trên cổng 6379

Bây giờ, để các vùng chứa chạy, hãy xây dựng các hình ảnh và sau đó khởi động các dịch vụ

curl -SL https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
2

Mẹo. Bạn thậm chí có thể chạy các lệnh trên được kết hợp trong một lệnh duy nhất

curl -SL https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
3

Lấy một tách cà phê. Hoặc đi bộ đường dài. Điều này sẽ mất một lúc trong lần đầu tiên bạn chạy nó. Các bản dựng tiếp theo chạy nhanh hơn nhiều vì Docker lưu trữ kết quả từ bản dựng đầu tiên

Khi các dịch vụ đang chạy, chúng ta cần tạo quá trình di chuyển cơ sở dữ liệu

curl -SL https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
4

Lấy IP được liên kết với Docker Machine -

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
9 - rồi điều hướng đến IP đó trong trình duyệt của bạn

Docker soạn python

Tốt đẹp

thử làm mới. Bạn sẽ thấy cập nhật bộ đếm. Về cơ bản, chúng tôi đang sử dụng Redis INCR để tăng sau mỗi yêu cầu được xử lý. Kiểm tra mã trong web/docker_django/apps/todo/views. py để biết thêm thông tin

Một lần nữa, điều này tạo ra bốn dịch vụ, tất cả đều chạy trong các vùng chứa khác nhau

curl -SL https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
6

Để xem các biến môi trường nào có sẵn cho dịch vụ web, hãy chạy

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
0

Để xem nhật ký

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
1

Bạn cũng có thể nhập Postgres Shell - vì chúng tôi đã chuyển tiếp cổng tới môi trường máy chủ trong docker-compose. yml - để thêm người dùng/vai trò cũng như cơ sở dữ liệu thông qua

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
2

Sẵn sàng để triển khai?

Loại bỏ các quảng cáo

triển khai

Vì vậy, với ứng dụng của chúng tôi đang chạy cục bộ, giờ đây chúng tôi có thể đẩy chính môi trường này tới nhà cung cấp dịch vụ lưu trữ đám mây với Docker Machine. Hãy triển khai hộp Digital Ocean

Ghi chú. Nếu bạn muốn thực hiện một cách tiếp cận khác để triển khai ứng dụng Django của mình, hãy xem hướng dẫn hoặc khóa học video của Real Python về cách sử dụng Gunicorn và Nginx

Sau khi bạn đăng ký Digital Ocean, hãy tạo Mã thông báo truy cập cá nhân, rồi chạy lệnh sau

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
3

Quá trình này sẽ mất vài phút để cung cấp giọt và thiết lập Máy Docker mới có tên là sản xuất

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
4

Bây giờ chúng tôi có hai Máy đang chạy, một máy cục bộ và một trên Digital Ocean

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
5

Đặt sản xuất làm máy đang hoạt động và tải môi trường Docker vào trình bao

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
6

Cuối cùng, hãy xây dựng lại ứng dụng Django trên đám mây. Lần này chúng ta cần sử dụng một tệp Docker Compose hơi khác một chút không gắn ổ đĩa vào vùng chứa. Tại sao? . Trong sản xuất, rõ ràng là không cần điều này

├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   └── sites-enabled
│       └── django_project
├── production.yml
└── web
    ├── Dockerfile
    ├── docker_django
    │   ├── __init__.py
    │   ├── apps
    │   │   ├── __init__.py
    │   │   └── todo
    │   │       ├── __init__.py
    │   │       ├── admin.py
    │   │       ├── models.py
    │   │       ├── templates
    │   │       │   ├── _base.html
    │   │       │   └── home.html
    │   │       ├── tests.py
    │   │       ├── urls.py
    │   │       └── views.py
    │   ├── settings.py
    │   ├── urls.py
    │   └── wsgi.py
    ├── manage.py
    ├── requirements.txt
    └── static
        └── main.css
7

Bạn có nhận thấy cách chúng tôi chỉ định một tệp cấu hình khác cho sản xuất không?

Lấy địa chỉ IP được liên kết với tài khoản Digital Ocean đó và xem nó trong trình duyệt. Nếu mọi việc suôn sẻ, bạn sẽ thấy ứng dụng của mình đang chạy.

Phần kết luận

  • Lấy mã từ repo (đánh dấu sao nữa.. lòng tự trọng của tôi phụ thuộc vào nó. )
  • Bình luận bên dưới với câu hỏi
  • Cần một thử thách? . Giữ nó KHÔ
  • Có một ngày tuyệt vời

Tiền thưởng miễn phí. Nhấp vào đây để truy cập Hướng dẫn tài nguyên học tập Django miễn phí (PDF) cho bạn biết các mẹo và thủ thuật cũng như những cạm bẫy phổ biến cần tránh khi xây dựng ứng dụng web Python + Django

Đánh dấu là đã hoàn thành

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Docker soạn python

Gửi cho tôi thủ thuật Python »

Về Đội

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Docker soạn python

Florian

Docker soạn python

Michael

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Docker soạn python

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bậc thầy Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi