繁体   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