node.js - 在 Azure 应用服务中使用 docker-compose
问题描述
我的平均堆栈代码在 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"]
码头工人-compose.yml
version: '3'
services:
backend:
build: ./backend
ports:
- "3000:3000"
frontend:
build: ./frontend
ports:
- "4200:80"
解决方案
对于此问题,问题在于build
Azure 应用服务中不支持的 docker-compose 的属性。您可以在Docker Compose 选项中获得有关支持选项的更多详细信息。
因此,您的解决方案是自己在本地创建映像,然后将它们推送到 docker 注册表,例如 Azure 容器注册表。最后,您需要将 into 更改build
为image
. 然后将其部署到 Azure App Service 就可以正常工作了。
推荐阅读
- javascript - 挑战 nodejs CSV 到 JSON 解析问题
- docker - keycloak realm.json 中是否允许使用系统环境变量?
- javascript - 在 Vue.js 组件中放置 PayPal 按钮
- r - 如何在 R 中用特定用户标记相同的值?
- spring-data-redis - ReadFrom.NEAREST 设置无法正常工作
- java - VB.Net 套接字与 Android Socket 通信
- environment-variables - 在mac上删除环境变量
- python - 是否可以在不打开浏览器的情况下在 Python 中播放来自网站的声音/音乐?
- plsql - Apex 20.1 复杂假设情景分析
- ios - 为“UIBezierPath”的填充颜色设置动画是否需要新的扫描转换?