【问题标题】:Docker AWS Certificate Manager SSL NodsJS failureDocker AWS 证书管理器 SSL NodsJS 失败
【发布时间】:2017-12-26 16:22:31
【问题描述】:

我已经使用 Docker 提供的 Cloudformation 模板创建并部署了一个 docker swarm 集群 NodeJS 应用程序。

我的 NodeJS 应用程序将端口 80 和 443 都映射到端口 3000。

我可以确认弹性负载均衡器对端口 80 和 443 都有侦听器。

为什么我可以在http上成功访问我的应用程序,但在https上却不行?

例如: http://app.myapp.com/api/health 响应成功,但 https://app.myapp.com/api/health 没有响应

【问题讨论】:

  • 您能否提供更多详细信息?怎么没反应?你是如何配置你的监听器的?实际的 URL 是什么?
  • 我正在使用 docker stack 部署应用程序。在撰写文件中,在节点服务下,我公开了 2 个端口:-“80:3000”-“443:3000”这会自动在负载均衡器中为端口 80 和端口 443 添加 TCP 侦听器。在浏览器中,当我访问 http 页面,我可以看到我得到了结果,而 https 无法访问该站点

标签: node.js ssl docker amazon-cloudformation docker-swarm


【解决方案1】:

在通过网络和官方 docker 文档和论坛进行更多挖掘之后。

我发现以下内容非常有用https://docs.docker.com/docker-for-aws/load-balancer/#more-full-examples

诀窍是为服务添加标签并公开端口 443。

请注意,如果您使用的是stack deploy label should be on the deploy level not on the service level

这是一个与堆栈部署一起使用的示例 docker compose 文件

version: '3.3'

services:
  node:
    image: "8574365892346589.dkr.ecr.eu-central-1.amazonaws.com/app:1.5.1"
    working_dir: /home/node/app
    environment:
      - APP_PORT=3000
      - NODE_ENV=production
    volumes:
      - localstorage:/home/node/app
    ports:
      - "80:3000"
      - "443:3000"
    deploy:
      mode: global
      labels:
        - "com.docker.aws.lb.arn=arn:aws:acm:eu-central-1:873456923456:certificate/blahblahblahblahblahblah"
      update_config:
        parallelism: 2
        delay: 5s
      restart_policy:
        condition: any
        delay: 5s
        max_attempts: 5
        window: 120s

volumes:
  localstorage:

注意标签在部署下的位置

希望有帮助

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多