簡體   English   中英

在 azure 應用服務中使用 docker-compose

[英]Using docker-compose in azure app service

我讓我的平均堆棧代碼在 docker-compose 配置中工作。 如果我在我的電腦上運行docker-compose up ,那么我可以在localhost成功登錄到我的應用程序如果轉到應用程序服務並單擊 docker-compose 預覽選項並上傳我的 docker-compose.yml 文件。 部署后,當我單擊該應用程序的 URL 時,出現應用程序錯誤,但不知道為什么。 也許我必須更改文件中的某些內容才能使其在不同的環境中工作? 我感謝任何幫助!

我在某處讀到,如果在同一訂閱中使用 ACR,則不必提供用戶名、密碼或 URL 詳細信息,確實如此。 因此,如果是這種情況,則身份驗證不是問題。

前端 docker 鏡像和后端 docker 鏡像位於 azure 容器注冊表中。 當我在應用服務中設置 docker 時,我指向注冊表 來自 azure 的 docker 日志說

2020-02-19 15:08:20.257 INFO  - Starting multi-container app, configuration = 


2020-02-19 15:08:22.806 ERROR - Pull image threw Exception: Object reference not set to an instance of an object.
2020-02-19 15:08:22.806 ERROR - Pulling docker image  failed:
2020-02-19 15:08:22.806 ERROR - Image pull failed: Verify docker image configuration and credentials (if using private repository)
2020-02-19 15:08:22.806 ERROR - multi-container unit was not started successfully
2020-02-19 15:08:22.831 INFO  - Container logs from testinggc_backend_0_250edca0 = 
2020-02-19 15:08:28.902 INFO  - Stoping site testinggc because it failed during startup.
2020-02-19 15:08:30.129 INFO  - Starting multi-container app, configuration = 


前端 Dockerfile

FROM node

MAINTAINER Phil

WORKDIR /src

COPY . .

RUN npm install

RUN npm install -g @angular/cli

EXPOSE 4200

CMD ng serve --host 0.0.0.0 --port 4200

后端 Dockerfile

FROM node:10.16.3

MAINTAINER Phil

WORKDIR /src

COPY . /src

RUN npm install

RUN npm install -g nodemon

EXPOSE 3000

CMD ["npm", "run", "start"]

docker-compose.yml


version: '3'
services:
    backend:
        build: ./backend
        ports:
            - "3000:3000"
    frontend:
        build: ./frontend
        ports:
            - "4200:80"

對於此問題,問題在於 Azure 應用服務中不支持的 docker-compose 的屬性build 您可以在Docker Compose options 中獲取有關支持選項的更多詳細信息。

因此,您的解決方案是自己在本地創建映像,然后將它們推送到 docker 注冊表,例如 Azure 容器注冊表。 最后,您需要將build更改為image 然后將其部署到 Azure 應用服務,它會正常工作。

另一種方法是使用更新的(2020 年 10 月) compose-cli ,它既可以在本地運行,也可以在Microsoft ACI(Azure 容器實例)的上下文中運行。

示例: Guillaume Tardif (Docker 高級軟件工程師)的“ 將 Minecraft Docker 服務器部署到雲端

在本地啟動它的命令現在要簡單得多:

 $ docker-compose --project-name mc up

並且要部署到 ACI,仍然使用我之前創建的 ACI 上下文:

 $ docker compose --project-name mc2 up

另請參閱Peter McKee ( Coding Adventures.io ) 的“ 如何使用 Docker CLI 和 Compose 將容器部署到 Azure ACI ”。

您可以輕松創建符合 ACI 的上下文:

docker context create aci myaci
docker-compose push
docker context use myaci
docker compose up

另外,“ VSCode Docker 擴展現在可以在 Azure 容器實例中運行容器”,來自Mike Morton (高級項目經理 - Microsoft - Visual Studio)

https://cloudblogs.microsoft.com/uploads/prod/sites/37/2020/07/CreateContextPlusActions.gif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM