首页 > 解决方案 > 使用 docker 部署

问题描述

我是使用 docker 部署的新手。实际上,我在 docker 容器内的计算机上运行我的 django 应用程序,它在端口 localhost:8080 上成功运行。然后我将代码拉到远程服务器并启动 docker-compose up,应用程序也在那里成功运行。我想问的是,如何借助服务器的ip地址查看应用程序?例如,如果 ip 地址是 123.45.67.89,我认为应用程序应该在 123.45.67.89:8080 中运行,但它不会在那里运行。如何访问在远程服务器的容器中运行的应用程序?

PS我没用过nginx,应该用吗?

码头工人-compose.yml

标签: djangodockerdeploymentdocker-composeremote-server

解决方案


这个问题的答案很大程度上取决于您在哪里托管生产应用程序,以及它为您提供的开箱即用服务类型。

一般来说,生产服务器通常在容器化应用程序前面有一些反向代理或应用程序负载均衡器。

由于您是从 docker 开始的,并且我假设这是一个个人或小型应用程序,因此我可以推荐以下内容:

  1. 如果您在托管服务提供商方面很灵活,请尝试Digital Ocean。它们对开发人员非常友好,并且具有成本效益,至少在某个规模点之前是这样。
  2. 使用自动泊坞窗 nginx-proxy。这个工具可以让你在你的文件中添加几行docker-compose.yml代码,然后神奇地得到一个配置好的 nginx 代理,而不需要对 nginx 有任何了解。

我正在使用这种方法将多个个人网站部署到单个低成本服务器上。

一个示例docker-compose.yml可能如下所示:

services:
  nginx:
    image: nginxproxy/nginx-proxy
    ports: ["${PORT:-80}:80"]
    restart: always
    volumes:
    - /var/run/docker.sock:/tmp/docker.sock:ro
    environment:
      DEFAULT_HOST: www.yoursite.com

  app:
    depends_on: [nginx]
    restart: always
    image: your/image
    environment:
      VIRTUAL_HOST: myapp.localhost,www.yoursite.com

这基本上告诉 nginx-proxy 在http://myapp.localhosthttp://www.yoursite.com上为您的应用程序提供服务。

当然,您需要将您的域 DNS 指向您的数字海洋 IP。


推荐阅读