使用Docker compose部署Azure服务应用程序

i5desfxk  于 2023-04-20  发布在  Docker
关注(0)|答案(1)|浏览(193)

我正在尝试在Azure上使用Docker Composer(预览版)部署一个简单的应用程序。我有2个映像,一个用于后端API,另一个用于前端。

version: "3"
services: 
  backend: 
    image: spring-backend
    ports:
      - '8080:8080' 
  angular: 
    image: angular 
    container_name: angular

但是当我看到日志时,它绑定在错误的端口,应用程序无法正常工作。

2023-04-12T04:47:06.271Z INFO - docker run -d -p 7413:8080 --name solution_test_7edf902b -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=test-example-solution -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=test-example-solution.azurewebsites.net -e WEBSITE_INSTANCE_ID=b08b793703ed90c29d190499db3bc194822d9b232329810c8844678e66822c18 -e WEBSITE_USE_DIAGNOSTIC_SERVER=False spring-backend

每次我重新启动服务或更改部署时,似乎都选择了一个随机端口进行绑定。

1cklez4t

1cklez4t1#

运行docker run -d -p <random>:8080时,日志中仍然显示随机端口
另外,当我们运行docker run -d -p <random>:8080命令时,Docker将容器的端口8080Map到主机上的随机端口,以避免多个容器在同一主机上运行时发生端口冲突。我也获得了随机端口,但我可以成功部署和运行应用程序。

  • 使用docker ps命令查看容器端口和主机端口之间的Map。

在您的情况下,您可以尝试将WEBSITES_PORT:8080作为应用程序设置添加到应用程序服务的配置部分,并检查MSDoc中提供的解决方案是否可以帮助您解决问题。x1c 0d1x
我通过创建一个示例spring Boot 应用程序在我的环境中复制并检查了相同的内容。使用命令nano docker-compose.yml和以下脚本创建了docker-compose.yml

使用docker-compose,我已经使用下面的命令创建了一个docker-compose.yml文件应用服务:

az webapp create --resource-group <Resource_Group_Name> --plan <App_Service_Plan> --name <App_name> --multicontainer-config-type compose --multicontainer-config-file <yml_file_name>

  • 使用端口配置为8080的docker-compose部署我的容器。


**结果:**应用部署并运行成功。x1c4d 1x

相关问题