当前位置: 首页 > 知识库问答 >
问题:

Azure容器Docker撰写(预览)问题监听端口8080

桓修能
2023-03-14

我想在Azure Web app for Containers上使用Docker Compose部署一个基于角度的应用程序。

我已经在我们的私有存储库中创建了应用程序的自定义映像,下面是Docker Compose文件的改进版本

version: '3.8'
services:
  cnil-pia-back:
    container_name: pia-back
    image: example.azurecr.io/cnil-pia/pia-backend:latest
    restart: unless-stopped
    environment:
      DATABASE_HOST: 'database'
      DATABASE_USERNAME: 'postgres'
      DATABASE_PASSWORD: 'somepassword' # Please don't mind, we are testing for now
      SECRET_KEY_BASE: 'somesecret'
    links:
      - database
    depends_on:
      - database
    ports:
      - 8080:3000 # See comment later

  cnil-pia-front:
    container_name: pia-front
    image: example.azurecr.io/cnil-pia/pia-frontend:latest
    restart: unless-stopped
    ports:
      - 80:80

  database:
    container_name: pia-db
    image: postgres:13
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: 'somepassword'
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data: # Probably it won't work, but we are not discussing this

后端应用程序必须对internet开放,或者至少是防火墙。无论如何,Angular从浏览器调用后端,因此前端应用程序(提供Angular静态资源)和后端应用程序都必须可以从浏览器访问。

问题是,目前使用所选的DNS名称,客户端都无法访问端口8080或3000,而Angular应用程序可以。

我从Azure文档中了解到Docker Compose支持有一些限制,包括只支持端口8080和80。

我希望部署两个容器,一个在前端监听80(由Azure终止的HTTPS),另一个在端口8080上运行良好,不管HTTPS如何

这是Docker日志的摘录

2021-07-12T09:47:15.514Z INFO  -  Status: Downloaded newer image for example.azurecr.io/cnil-pia/pia-backend:latest
2021-07-12T09:47:15.522Z INFO  - Pull Image successful, Time taken: 2 Minutes and 37 Seconds
2021-07-12T09:47:15.551Z INFO  - Starting container for site
2021-07-12T09:47:15.552Z INFO  - docker run -d -p 0:3000 --name example_cnil-pia-back_0_e65f2c35 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITE_SITE_NAME=example-app -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=example-app.azurewebsites.net -e WEBSITE_INSTANCE_ID=acc200cd5031529803448aa52023fe967882435b7dc689afd8df4117b5572ca3 example.azurecr.io/cnil-pia/pia-backend:latest  

请注意,Azure Docker引擎在-p选项中任意使用0作为侦听端口。

问题是:如果可能的话,我如何在Azure上使用Docker Compose公开两个容器?

共有1个答案

束飞捷
2023-03-14

该功能处于预览版中,每个Docker撰写堆栈仅支持公开本地端口80,该端口由Azure终止TLS。

这意味着堆栈中只有一个服务可以被外部访问。只有当前端层在内部调用后端(例如服务器页面技术)时,才能部署三层服务。但是如果后端必须通过互联网公开,它必须单独部署。要么在另一个Docker组合堆栈中,要么作为单个容器

 类似资料:
  • 问题内容: 我正在端口process.env.PORT(1337)(Microsoft Azure的默认端口)上运行nodejs应用程序(Azure Web App)。另外,我需要监听websocket的其他端口。在我的本地计算机上,我使用的是8000,但似乎在Azure上已关闭。 是否有其他我可以收听的端口,实际上是否有可能? 问题答案: 如果要部署到Azure Web App,则只有端口80和

  • 问题内容: 我想使用docker-compose在“主机”网络中生成3个服务。这是我的docker-compose.yml文件: 我收到以下错误: 我在Windows上使用boot2docker。 Docker和Docker-compose版本: 如果我通过使用所有内容手动运行所有服务,则一切正常。 在文档中,我读到 docker-compose支持* net 命令: * 净 联网模式。使用与do

  • 问题内容: 我正在运行一个简单的rest应用程序,并在docker容器/ docker-compose中运行。我相信,必须使用Spring Boot才能访问。但是,它会引发错误: 我的代码在这里。 问题答案: 由于在链接中使用别名,因此必须使用与别名相同的主机名来访问容器。因此,您可以执行以下一项操作, 在您的Spring Boot应用程序中使用http:// localhost:6379 而不是

  • Server可以监听多个端口,每个端口都可以设置不同的协议处理方式,例如80端口处理http协议,9507端口处理TCP协议。SSL/TLS传输加密也可以只对特定的端口启用。 !> 例如主服务器是WebSocket或Http协议,新监听的TCP端口(listen的返回值,即Swoole\Server\Port,以下简称port)默认会继承主Server的协议设置。必须单独调用port对象的set方

  • 我是一名spring boot初学者和一名云初学者,我通过应用程序服务(使用Intellij插件Azure工具包)在Azure中部署我的spring boot项目(RESTAPI)。 当我得到我的部署url时https://DOMAIN.azurewebsites.net,我很好奇为什么不用输入8080端口就可以获取数据。我不添加服务器。端口=我的应用程序中的8080。财产。 通常,如果您在Lin

  • 我有docker容器用于实验。所以我不知道以后尝试新应用时会使用哪些端口。在docker-run命令中使用ip/port从主机访问docker容器应用程序而不公开它,这是不可能的吗?