第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Docker 運行多個 Python 腳本和一個可執(zhí)行文件?

如何使用 Docker 運行多個 Python 腳本和一個可執(zhí)行文件?

紅糖糍粑 2021-09-25 10:07:12
我想創(chuàng)建一個包含兩個 Python 包以及一個包含可執(zhí)行文件的包的容器。這是我的主包 (dockerized_package) 樹:dockerized_project├── docker-compose.yml├── Dockerfile├── exec_project│   ├── config│   │   └── config.json│   ├── config.json│   ├── gowebapp├── pythonic_project1│   ├── __main__.py│   ├── requirements.txt│   ├── start.sh│   └── utility│       └── utility.py└── pythonic_project2    ├── collect    │   ├── collector.py    ├── __main__.py    ├── requirements.txt    └── start.shDockerfile 內(nèi)容:FROM ubuntu:18.04        RUN apt updateRUN apt-get install -y python3.6 python3-pip python3-dev build-essential gcc \    libsnmp-dev snmp-mibs-downloaderRUN pip3 install --upgrade pipRUN mkdir /appWORKDIR /appCOPY . /appWORKDIR /app/snmp_collectorRUN pip3 install -r requirements.txtWORKDIR /app/proto_conversionRUN pip3 install -r requirements.txtWORKDIR /app/pythonic_project1CMD python3 __main__.pyWORKDIR /app/pythonic_project2CMD python3 __main__.pyWORKDIR /app/exec_projectCMD ["./gowebapp"]docker-compose 內(nèi)容:version: '3'services:  proto_conversion:      build: .      image: pc:2.0.0      container_name: proto_conversion#      command: #        - "bash  snmp_collector/start.sh"#        - "bash  proto_conversion/start.sh"      restart: unless-stopped      ports:        - 8008:8008      tty: true問題:當(dāng)我用 運行這個項目時docker-compose up --build,只CMD運行最后一個命令。因此,我認(rèn)為前面的CMD命令被殺死了,Dockerfile因為當(dāng)我刪除最后兩個時CMD,第一個CMD運行良好。有沒有辦法在后臺運行多個 Python 腳本和一個可執(zhí)行文件?我也嘗試過使用 bash 文件也沒有成功。
查看完整描述

3 回答

?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗 獲得超11個贊

最佳實踐是將它們作為三個獨立的容器啟動。這是雙重正確的,因為您正在使用三個獨立的應(yīng)用程序,將它們捆綁到一個容器中,然后嘗試從中啟動三個獨立的東西。


在您的每個項目子目錄中創(chuàng)建一個單獨的 Dockerfile。這些可以更簡單,特別是對于只包含已編譯二進(jìn)制文件的


# execproject/Dockerfile

FROM ubuntu:18.04

WORKDIR /app

COPY . ./

CMD ["./gowebapp"]

然后在您的docker-compose.yml文件中有三個單獨的節(jié)來啟動容器


version: '3'

services:

  pythonic_project1:

    build: ./pythonic_project1

    ports:

      - 8008:8008

    env:

      PY2_URL: 'http://pythonic_project2:8009'

      GO_URL: 'http://execproject:8010'

  pythonic_project2:

    build: ./pythonic_project2

  execproject:

    build: ./execproject

如果你真的不能重新排列你的 Dockerfiles,你至少可以從docker-compose.yml文件中的同一個鏡像啟動三個容器:


services:

  pythonic_project1:

    build: .

    workdir: /app/pythonic_project1

    command: ./__main__.py

  pythonic_project2:

    build: .

    workdir: /app/pythonic_project1

    command: ./__main__.py

使用多個容器和圖像構(gòu)建項目有幾個很好的理由:


如果您運行自己的 shell 腳本并使用后臺進(jìn)程(就像其他答案一樣),它只是不會注意到其中一個進(jìn)程是否死亡;在這里你可以使用 Docker 的重啟機制來重啟單個容器。

如果您對其中一個程序進(jìn)行了更新,則只能更新并重新啟動該單個容器,而其余部分保持不變。

如果您使用過更復(fù)雜的容器編排器(Docker Swarm、Nomad、Kubernetes),不同的組件可以在不同的主機上運行,并且在單個節(jié)點上需要較小的 CPU/內(nèi)存資源塊。

如果您使用過更復(fù)雜的容器編排器,您可以單獨擴(kuò)展使用更多 CPU 的組件。


查看完整回答
反對 回復(fù) 2021-09-25
  • 3 回答
  • 0 關(guān)注
  • 504 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號