Azure Web App部署Docker Compose多容器应用失败,无日志求助
Azure Web App多容器部署故障排查
我已按照微软教程成功部署无数据库的Web应用到Azure Web App,现在尝试部署自研的Java Telegram回声应用(接收Telegram消息并存储至MySQL),选择Azure Web App的Docker Compose部署方式。
初始配置
docker-compose-az.yml
version: '3' services: db: image: mysql:oraclelinux9 environment: MYSQL_DATABASE: echo MYSQL_ROOT_PASSWORD: password volumes: - db_data:/var/lib/mysql - ./mysql:/docker-entrypoint-initdb.d/ app: image: app build: context: . dockerfile: DockerfileAZ depends_on: - db volumes: db_data:
DockerfileAZ
FROM --platform=linux/amd64 eclipse-temurin:17-jdk RUN mkdir -p /opt/app/lib COPY ServerToyProject.jar /opt/app/ COPY lib/* /opt/app/lib/ RUN echo "done: target/lib/* /opt/app/lib/" WORKDIR /opt/app CMD ["java", "-cp", "ServerToyProject.jar:lib/*:.", "main.Echo"] RUN echo "done: java executed"
Azure部署命令
az webapp create --resource-group resource-group-echo --plan app-service-plan-echo --name tmp2 --multicontainer-config-type compose --multicontainer-config-file docker-compose-az.yml
(注:资源组和应用服务计划已提前创建)
出现的问题
- 部署中心日志页无任何日志显示
- 应用无法正常启动运行
补充信息:
- 本地通过Docker Compose启动应用完全正常
- 偶尔能在部署中心看到日志,提示卷路径存在问题
- 不确定Registry source与server URL的配置是否正确
调整后的配置方案
我将镜像推送至Azure容器注册表,重新构建镜像:
Dockerfile.mysql
FROM mysql:oraclelinux9 COPY ./mysql/*.sql /docker-entrypoint-initdb.d/ ENV MYSQL_DATABASE=echo ENV MYSQL_ROOT_PASSWORD=password
DockerfileAZ
FROM eclipse-temurin:17-jdk RUN mkdir -p /opt/app/lib COPY ServerToyProject.jar /opt/app/ COPY lib/* /opt/app/lib/ WORKDIR /opt/app CMD ["java", "-cp", "ServerToyProject.jar:lib/*:.", "main.Echo"]
修改后的docker-compose-az.yml
services: db: image: registrytmp.azurecr.io/sqlaz:latest environment: MYSQL_DATABASE: echo MYSQL_ROOT_PASSWORD: password volumes: - db_data:/var/lib/mysql app: image: registrytmp.azurecr.io/fromdockerfileaz:latest depends_on: - db volumes: db_data:
调整说明:将SQL脚本放入MySQL镜像的Dockerfile中执行,解决了本地目录路径映射的问题,同时使用Azure容器注册表托管镜像。
该配置在IntelliJ中运行正常,但部署到Azure Web App仍失败;即使配置为无效内容,部署中心也无任何日志输出。

内容的提问来源于stack exchange,提问作者fritz
相关产品推荐
相关产品推荐

