Ví dụ python dockerfile
Công cụ đóng gói Conda triển khai các môi trường cho phép các ứng dụng khác nhau cài đặt các thư viện khác nhau. Vì vậy, khi bạn đang xây dựng hình ảnh Docker cho ứng dụng dựa trên Conda, bạn sẽ cần kích hoạt môi trường Conda Show
Thật không may, việc kích hoạt môi trường Conda hơi phức tạp và tương tác không tốt với cách thức hoạt động của 7Vậy làm cách nào để bạn kích hoạt môi trường Conda trong 7?Vì mục đích giáo dục, tôi sẽ bắt đầu bằng việc giải thích vấn đề và chỉ ra một số giải pháp không hiệu quả, nhưng nếu muốn, bạn có thể chuyển thẳng sang giải pháp hiệu quả Vấn đề với import flask print("It worked!") 9Môi trường Conda cung cấp một hình thức cách ly. mỗi môi trường có bộ thư viện C, thư viện Python, nhị phân, v.v. Conda cài đặt một môi trường cơ sở nơi chính nó được cài đặt, vì vậy, để sử dụng ứng dụng dựa trên Conda, bạn cần tạo rồi kích hoạt một môi trường mới, dành riêng cho ứng dụng Cụ thể, để kích hoạt môi trường Conda, bạn thường chạy 9. Vì vậy, hãy thử điều đó như lần thử đầu tiên của chúng tôi và xem nó thất bại như thế nàoChúng ta sẽ bắt đầu với một tệp 1 xác định môi trường Conda
Và một chương trình Python nhỏ, 2
Nỗ lực đầu tiên tại một 7 có thể trông như sau
Nếu chúng tôi xây dựng hình ảnh Docker kết quả, đây là điều sẽ xảy ra 0Tại sao mô phỏng kích hoạt không hoạt độngBạn có thể tránh sử dụng 9 và chỉ đặt một vài biến môi trường không? Không giống như tập lệnh 5 cho công cụ Python 6, chỉ đặt một hoặc hai biến môi trường, kích hoạt Conda cũng có thể kích hoạt các biến môi trường do gói đặtĐiều đó có nghĩa là bạn không thể mô phỏng nó, bạn cần sử dụng cơ sở hạ tầng kích hoạt của chính Conda. Vậy chúng ta sẽ làm điều đó như thế nào? Một giải pháp thất bại, phần #1. FROM continuumio/miniconda3 WORKDIR /app # Create the environment: COPY environment.yml . RUN conda env create -f environment.yml # Activate the environment, and make sure it's activated: RUN conda activate myenv RUN echo "Make sure flask is installed:" RUN python -c "import flask" # The code to run when container is started: COPY run.py . ENTRYPOINT ["python", "run.py"] 7Chúng ta có thể khiến 9 hoạt động bằng cách thực hiện 7 được yêu cầu không? 00 sẽ cài đặt một số lệnh khởi động cho 01 để cho phép 9 hoạt động, nhưng mã thiết lập đó chỉ chạy nếu bạn có trình bao bash đăng nhập. khi bạn làm 0Điều đang thực sự xảy ra là Docker đang làm 03. Tuy nhiên, bạn có thể ghi đè trình bao mặc định bằng lệnh 04Điều đó cộng với 00 mang lại cho chúng tôi những điều sau đây 7 5Điều này sẽ làm việc? 6Vấn đề là mỗi 07 trong một 7 là một lần chạy riêng biệt của 01. Vì vậy, khi bạn làm 0Điều đó chỉ kích hoạt nó cho 07 đầu tiên và các 07 sau đó là các phiên shell mới mà không xảy ra kích hoạtMột giải pháp thất bại, phần #2. Kích hoạt tự độngChúng tôi muốn mọi lệnh 07 được kích hoạt, vì vậy chúng tôi thêm 9 vào 04 của người dùng hiện tại 6Và bây giờ hình ảnh được xây dựng 7Chúng tôi chưa hoàn thành, mặc dù. Nếu chúng ta chạy hình ảnh 0Vấn đề là cú pháp chúng tôi sử dụng cho 05 không thực sự bắt đầu một phiên trình bao. Bây giờ, thay vì thực hiện 06, bạn thực sự có thể yêu cầu 05 sử dụng trình bao với cú pháp thay thế này 1Vấn đề với cú pháp này là nó làm hỏng quá trình tắt container, vì vậy bạn có thể không muốn sử dụng nó Một giải pháp làm việc với import flask print("It worked!") 08Thay vì sử dụng 9, có một cách khác để chạy lệnh bên trong môi trường. 50 sẽ chạy 51 bên trong môi trường. Bạn cũng sẽ muốn chuyển cờ 52 cho 08 để nó phát trực tiếp thiết bị xuất chuẩn và thiết bị xuất chuẩn (cảm ơn Joe Selvik đã chỉ ra điều này). Vì vậy, điều đó gợi ý những điều sau đây 7 2Và thực sự 3Một giải pháp làm việc khácMột nhược điểm của giải pháp trước đó là 08 được mô tả như một lệnh “thử nghiệm”, do đó, về mặt lý thuyết, nó có thể gây ra sự cốMột cách tiếp cận khác là tận dụng thực tế là hình ảnh 56 mà chúng ta đang sử dụng có cấu hình 01 để sử dụng Conda. Do đó, chúng tôi có thể thiết lập cấu hình bash để kích hoạt môi trường của mình và đối với điểm vào, chúng tôi có thể chạy tập lệnh shell thực hiện kích hoạtCó một điểm khó khăn ở đây. thông thường, tôi khuyên bạn nên sử dụng các tập lệnh Shell ngay từ đầu để kích hoạt cái gọi là “chế độ nghiêm ngặt bash”. Về cơ bản, điều này có nghĩa là nếu bạn sử dụng một biến không xác định hoặc một chương trình bị lỗi, tập lệnh sẽ dừng lại, đó là điều bạn muốn. Tuy nhiên, một số tập lệnh kích hoạt Conda bị hỏng khi chế độ này được bật. Vì vậy, những gì chúng ta phải làm là vô hiệu hóa nghiêm ngặt trong khi kích hoạt tập lệnh Đây là điểm vào 4Và 7 5Và chúng ta có thể thử 3Bài viết tiếp theo. Thu nhỏ hình ảnh Conda Docker của bạn bằng conda-pack Tạo hình ảnh Docker Conda sẵn sàng sản xuất chỉ trong một giờBạn đang đóng gói ứng dụng Python dựa trên Conda của mình bằng Docker và điều đó có nghĩa là một loạt lo lắng mới Bạn có hình ảnh khổng lồ 2GB, việc xây dựng lại hình ảnh có nghĩa là bạn phải chờ hàng giờ để Conda giải quyết các vấn đề phụ thuộc và bạn lo lắng về tính bảo mật của hình ảnh của mình Tìm hiểu cách nhanh nhất, dễ dàng nhất để chuyển từ hình ảnh Docker nguyên mẫu mà bạn đang chạy trên máy tính xách tay của mình sang hình ảnh Docker sẵn sàng sản xuất nhỏ, xây dựng nhanh và bảo mật sách điện tử miễn phí. "Giới thiệu về Dockerizing cho sản xuất"Tìm hiểu quy trình đóng gói DevOps lặp đi lặp lại từng bước trong sách điện tử nhỏ miễn phí này. Bạn sẽ tìm hiểu những gì cần ưu tiên, các quyết định bạn cần đưa ra và các quy trình tổ chức đang diễn ra mà bạn cần bắt đầu Ngoài ra, bạn sẽ tham gia cùng hơn 6500 người nhận email hàng tuần về các công cụ và kỹ thuật thực tế, từ cách đóng gói Docker đến các phương pháp hay nhất về Python |