【问题标题】:How to map a virtual host to a container in docker?如何将虚拟主机映射到docker中的容器?
【发布时间】:2017-09-11 18:45:06
【问题描述】:

我正在尝试使用 Docker 设置 LEMP 本地开发环境。以下是我的 docker-composer.yml:

version: '2'
services:
  apache:
    build:
      context: ./docker/apache-php7
      dockerfile: Dockerfile
    image: foo/apache-php7
    volumes:
      - .:/var/www/html
    ports:
      - "80:80"
      - "443:443"
    networks:
     - localnet
  node:
    build:
      context: ./docker/node
      dockerfile: Dockerfile
    image: foo/node
    volumes:
     - .:/var/www/html
    networks:
     - localnet
  mysql:
    image: mysql:5.7
    ports:
     - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: "root"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: "root"
    volumes:
     - mysqldata:/var/lib/mysql
    networks:
     - localnet
  redis:
    image: redis:alpine
    volumes:
     - redisdata:/data
    networks:
     - localnet
networks:
  localnet:
    driver: "bridge"
volumes:
  mysqldata:
    driver: "local"
  redisdata:
    driver: "local"

我可以通过 http://localhost 访问该网站。我没有使用http://localhost 访问该项目,而是尝试将其映射到http://foo.dev,但对于我的一生,我就是不知道如何实现这一目标?我见过的一个例子是this,但它使用了不同的图像,而且它也使用了 nginx。

【问题讨论】:

  • @johnharris85 听起来可能很懒惰,但我不知道从哪里开始。尝试过官方文档,谷歌,但我想我没有问正确的问题,所以不知道去哪里找。

标签: nginx docker docker-compose lamp


【解决方案1】:

我假设 foo/apache-php7 映像是从基于 Ubuntu 16.04 的 nimmis/apache-php7 派生的,因此默认情况下,无论主机名如何,您的 Apache 都会以相同的方式响应 HTTP 请求。 因此,您唯一需要做的就是在指向您服务器的 foo.dev DNS 区域中设置 A/AAAA 记录。

看起来该区域无论如何都需要注意:

% host foo.dev
foo.dev has address 127.0.53.53
foo.dev mail is handled by 10 your-dns-needs-immediate-attention.dev.

地址记录指向一个本地主机地址,直到您实际位于同一主机上时该地址才会起作用。您需要一个全球路由的 IP 地址。

【讨论】:

  • 是的,它是从 nimmis/apache-php7 图像中分叉出来的。我有点困惑为什么我需要设置 A/AAAA 记录来为我的计算机设置开发环境。我目前所做的一个例子是: 1. 运行一个 vagrant box 2. 设置一个 IP 地址(例如 192.168.2.19) 3. 在我的 /etc/hosts 添加以下内容: 192.168.2.19 foo.dev 现在当我导航到foo.dev,它运行本地虚拟盒实例。但是对于 Docker,我似乎无法弄清楚。除非我完全错过了它,因为我对 Docker 很陌生,否则我的回答没有帮助吗?
【解决方案2】:

我需要做的只是在相关站点的 apache conf 文件中添加 ServerName 指令。就我而言,它是 000-default.conf。我什至不需要更新主机文件,因为我将 Gerd 的答案标记为答案,因为这就是我的答案:

ServerName foo.dev

然后我用以下内容更新了我的主机文件:

127.0.0.1 foo.dev www.foo.dev

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2018-04-22
    相关资源
    最近更新 更多