【问题标题】:How to bind Docker Container Running Apache to domain如何将运行 Apache 的 Docker 容器绑定到域
【发布时间】:2020-02-07 23:05:17
【问题描述】:

我在 AWS 上基于此 stack 部署了应用程序,其中设置了 Rout 53 DNS。我想将我的域(exampl.com)指向在 docker 容器中运行的 Web 服务器(任何 apache/nginx)。我想知道如何将域绑定到该 Web 服务器?

我不确定在生产环境中部署应用程序的好坏方法,但它会帮助我理解。

【问题讨论】:

  • 您是如何在 AWS 上部署此堆栈的。换句话说,您使用哪个 aws 服务来运行此堆栈?例如 elasticbeanstalk、ec2、ecs 等
  • @ArunK 我用过 ec2。 Ubuntu,安装 docker 并运行我的 docker-compose。在我的本地机器上,我在 hosts 文件中添加了带有 127.0.0.1 example.com 的项目 url。在这里我无法理解我需要做什么。

标签: amazon-web-services docker docker-compose devops amazon-route53


【解决方案1】:

正如@mipnw 建议的那样,您可以在 Amazon ECS 中轻松运行 Docker 容器。

由于您没有使用 ECS,因此您可以通过以下方式将域指向 ec2 实例。

  1. 为ec2实例分配弹性IP地址

    参考:https://aws.amazon.com/premiumsupport/knowledge-center/ec2-associate-static-public-ip/

  2. 在 AWS Route53 中创建一条A 记录以指向弹性 IP 地址。

    参考:https://aws.amazon.com/premiumsupport/knowledge-center/route-53-create-alias-records/

  3. 如果您的 docker 将端口 80 暴露给主机。

    现在您可以通过http://example.com 访问您的应用程序(因为 http 默认端口是 80),为此您应该在实例的安全组中启用端口 80

    参考:https://aws.amazon.com/premiumsupport/knowledge-center/connect-http-https-ec2/

  4. 如果您的 docker 暴露了例如 8080 的端口,并且您想通过 http://example.com 访问该网站,您需要配置 apache/nginx 代理以通过端口 80443 接受流量并转发对 docker 暴露的端口的请求(本例中为 8080)

    参考:https://dev.to/kevbradwick/how-to-setup-a-reverse-proxy-to-your-host-machine-using-docker-mii

设置中最困难的部分是设置 SSL,您需要在 nginx 代理中配置 SSL 证书。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您需要在某处托管您的 docker 容器。由于您已经在使用 AWS,我建议您在 AWS ECS 中运行您的容器。

    然后您将在容器上公开一个端口,并将 Route53 配置为指向您的容器等...看起来ECS Service Discovery 可以更轻松地使用 Route53 注册您在 ECS 内运行的服务。

    【讨论】:

    • @mipnq,我正在使用 ec2。 docker 容器正在运行,我无法理解的是如何将外部世界流量指向 docker 容器内的应用程序以查看 html/json 响应。我可以在没有 docker 的情况下托管使用 apache 运行的应用程序,我需要创建一个虚拟主机(目录 域/url),但在这个 docker 案例中,我不确定如何通过互联网从外部世界通过 url 获取应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2018-08-08
    • 2021-09-18
    相关资源
    最近更新 更多