Docker django mysql
Để biết phần giới thiệu từng bước về triển khai ứng dụng Python trên Heroku, hãy xem Bắt đầu trên Heroku với Python Các tệp dự kiến cho PythonHeroku tự động xác định ứng dụng của bạn là ứng dụng Python nếu có bất kỳ tệp nào sau đây trong thư mục gốc của nó
Nếu không có tệp nào trong số này có trong thư mục gốc của ứng dụng của bạn, gói xây dựng Python sẽ không xác định chính xác ứng dụng của bạn Luồng triển khai PythonKhi bạn triển khai lên Heroku, các phần phụ thuộc mà bạn chỉ định trong tệp Nếu bạn đang sử dụng Django, lệnh cũng sẽ tự động chạy trong quá trình triển khai. Xem hướng dẫn của chúng tôi về Django và Tài sản tĩnh Để tự động thực hiện các tác vụ khác (chẳng hạn như bất kỳ quá trình di chuyển cơ sở dữ liệu bắt buộc nào) trước khi ứng dụng của bạn được triển khai, bạn có thể thêm lệnh giai đoạn phát hành vào ứng dụng của mình Các phiên bản và nâng cấp PythonTheo mặc định, ứng dụng của bạn tiếp tục sử dụng bất kỳ phiên bản Python nào được sử dụng khi nó được triển khai lần đầu tiên. Bạn có thể chỉ định một thời gian chạy Python khác để sử dụng trong tệp Sau khi đọc và kiểm tra mã được hiển thị trong môi trường phát triển django với docker, chúng tôi đã tách riêng môi trường phát triển của mình bằng cách sử dụng Docker, nhưng Làm cách nào chúng tôi có thể tách riêng ứng dụng và các phụ thuộc của mình với nhau? . . Ngoài ra, chúng tôi sẽ khắc phục sự cố đang chờ xử lý và tìm hiểu thêm một chút về mạng Docker Môi trường phát triển của chúng tôi được hiển thị trong bài trước có hai nhược điểm
Làm việc với một môi trường đang được sửa đổi liên tục (cài đặt hoặc gỡ cài đặt các yêu cầu hoặc dịch vụ) có thể mất một chút thời gian. Chúng tôi có thể dành vài giờ để tìm cách cài đặt các yêu cầu đó một cách thích hợp, thậm chí nhiều hơn nếu cần một phiên bản phụ thuộc cụ thể. Điều gì sẽ xảy ra nếu một phiên bản cụ thể của PostgreSQL được yêu cầu và bản phân phối của tôi không bao gồm cài đặt dễ dàng cho phiên bản đó? . )? Ngoài ra, nếu một số nhà phát triển đang làm việc trên cùng một dự án, tất cả họ sẽ phải thay đổi cấu hình Nginx. Điều đó sẽ tạo ra một tệp không thể tải lên kho lưu trữ, vì mỗi nhà phát triển có thể có một IP khác nhau. Làm thế nào chúng ta có thể giải quyết điều này? Giải phápDi chuyển ứng dụng của chúng tôi sang bộ chứa Docker (AKA “dockerizing”) sẽ cho phép chúng tôi khắc phục sự cố IP. Giải pháp này sẽ được triển khai bằng mạng docker. Docker cung cấp một chức năng cho phép chúng tôi tạo các mạng theo ý muốn và bao gồm các vùng chứa trong các mạng đó. Điều này giúp các vùng chứa có thể biết nhau bằng tên máy chủ (hoặc bí danh) của chúng. Nhưng điều này chỉ áp dụng cho các vùng chứa và ứng dụng của chúng tôi không chạy trong vùng chứa (nó không được cập cảng); (GHI CHÚ. mã bên dưới dựa trên kho lưu trữ này) 1. DockerfileDocker mang đến một tệp có cú pháp đặc biệt để tạo hình ảnh. Dựa trên hình ảnh đó, chúng tôi có thể chạy ứng dụng của mình. Trong trường hợp này, chúng tôi muốn hình ảnh ứng dụng của mình dựa trên Python 3. 6 Docker image, sau đó chúng tôi sẽ thêm mã ứng dụng và cuối cùng chuẩn bị sẵn sàng mọi thứ để chạy nó Tệp này sẽ được thêm vào thư mục gốc của dự án, nó được gọi là # Dockerfile Lệnh # docker-compose.yml 0 cho phép chúng ta chạy các lệnh cụ thể bên trong ngữ cảnh của hình ảnh đang được xây dựng. Và cuối cùng, lệnh # docker-compose.yml 1 sẽ thiết lập một lệnh (hoặc tập lệnh) mặc định để chạy khi vùng chứa được khởi độngSau đó, chúng tôi chạy lệnh này trong thiết bị đầu cuối của chúng tôi # docker-compose.yml 2Điều này sẽ tạo một hình ảnh Docker với ứng dụng của chúng tôi và các yêu cầu của nó được cài đặt. Nhưng chúng tôi đang sử dụng docker-compose để thiết lập dịch vụ; . Điều này cho phép chúng ta xây dựng một container với docker-compose. Điều này có thể được viết # docker-compose.yml Bây giờ chúng ta đã có ứng dụng dockerized của mình, hãy kết nối nó với các dịch vụ của nó 2. Docker soạn NetworkingHãy sử dụng docker-compose của chúng tôi. yml và tạo một mạng và kết nối các vùng chứa thông qua mạng này Điều này có thể thực hiện được bằng cách thêm một khóa yaml khác. # docker-compose.yml 4. Trong khóa mới này, chúng tôi phải xác định tên mạng (trong trường hợp này là # docker-compose.yml 5). Sau đó, chúng tôi sẽ thêm mọi dịch vụ vào mạng đó. Các tập tin sẽ trông như thế này________số 8_______Cấu hình này sẽ giúp tất cả các vùng chứa thuộc cùng một mạng và giờ đây chúng có thể được tham chiếu theo tên của chúng. Nói cách khác. Nếu một vùng chứa nằm trong mạng “chính” và lệnh # docker-compose.yml 6 được sử dụng, tên máy chủ này sẽ được phân giải thành IP riêng của vùng chứa đó trong mạng đó. Đây là cách chúng tôi kết nối các container. o/Bây giờ hãy sửa cấu hình 1. cấu hình cơ sở dữ liệu Bây giờ chúng ta có thể truy cập máy chủ cơ sở dữ liệu bằng cách sử dụng “db”, vì vậy tệp # docker-compose.yml 7 sẽ chứa# settings.py 2. cấu hình Nginx Giờ đây, chúng tôi có thể truy cập máy chủ ứng dụng của mình bằng cách sử dụng “ứng dụng”, vì vậy tệp # docker-compose.yml 8 sẽ chứa# nginx.conf Sau đó, chúng ta chỉ cần chạy lệnh sau # docker-compose.yml 9(GHI CHÚ. Nếu bạn đã chạy lệnh này, bạn sẽ cần thêm tùy chọn #docker-compose.yml0) Điều này sẽ tạo ra hình ảnh và chạy ứng dụng. Sau đó, chúng tôi có thể thực hiện di chuyển bằng cách chạy #docker-compose.yml1. (GHI CHÚ. Điều này có thể thất bại nếu cơ sở dữ liệu chưa chạy, chỉ cần đợi vài giây và thử lại) Mã cuối cùng có thể được nhìn thấy ở đây Phần kết luậnDocker cho phép chúng tôi đóng gói ứng dụng của mình, làm cho môi trường trở nên di động, có thể định cấu hình và bảo trì hơn. Nó có thể thêm một cấp độ gián tiếp (Cài đặt python sẽ không dễ chạy ứng dụng hơn sao?), nhưng bây giờ bạn không cần cài đặt django hay python trong máy tính của mình, bạn chỉ cần docker |