使用nginx-proxy在docker容器中运行多个dev项目

时间:2017-02-17 08:06:31

标签: nginx docker

据我了解docker-compose文件,使用docker-compose up命令加载图像并启动容器。相反,使用带有Dockerfile命令的docker build文件仅创建映像。我觉得我在这里错过了一些东西,因为事情并没有像我一样工作。

按照bitnami/wordpress说明,我使用docker-compose up d运行正常。然后可以通过localhost访问:81

version: '2'
services:
  mariadb:
    image: bitnami/mariadb:latest
    volumes:
      - /path/to/mariadb-persistence:/bitnami/mariadb
  wordpress:
    image: bitnami/wordpress:latest
    depends_on:
      - mariadb
    ports:
      - '81:80'
      - '443:443'
    volumes:
      - ./wordpress-persistence:/bitnami/wordpress
      - ./apache-persistence:/bitnami/apache
      - ./php-persistence:/bitnami/php

因为我希望能够以domain.com.dev的身份访问它,所以我查看了实现nginx-proxy。按照那里的说明,以及Docker nginx-proxy : proxy between containers的一些灵感,我想出了以下内容:

version: '2'
services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    restart: always
    ports:
      - "88:80"
    volumes:
      - "/var/run/docker.sock:/tmp/docker.sock:ro"

  mariadb:
    image: bitnami/mariadb:latest
    volumes:
      - //c/websites/domain_com/mariadb-persistence:/bitnami/mariadb
  domain.com.dev:
    image: bitnami/wordpress:latest
    depends_on:
      - mariadb
    ports:
      - '81:80'
    environment:
      - VIRTUAL_HOST=domain.com.dev
    volumes:
      - //c/websites/domain_com/wordpress-persistence:/bitnami/wordpress
      - //c/websites/domain_com/apache-persistence:/bitnami/apache
      - //c/websites/domain_com/php-persistence:/bitnami/php

使用此代码运行docker-compose up -d似乎完成且没有错误。但是,当我在浏览器中访问domain.com.dev时,我得到一个默认的/ page页面,这表明我在某种程度上已经到了那里,但并非一直如此。查看本地文件夹,它们会被创建,但似乎wordpress-persistence没有填充,这可以解释浏览器中的默认视图。

有关为什么这不会按预期出现的任何想法?我错过了一些明显的东西?

1 个答案:

答案 0 :(得分:0)

1)对于第一种方法,你需要"完成"配置。 如果您没有正在运行的网络服务器(nginx,apache等)(在端口80上) - 只需将端口从81更改为80

ports:
      - '80:80'
      - '443:443'

并添加记录" 127.0.0.1 domain.com.dev"到你的hosts文件(linux中的/etc/host)。

P.S。您可以在第二种方法中将端口从88更改为80 - 它可以在不更改hosts文件的情况下工作

如果在端口80上有一个正在运行的wevserver - 则需要在virtualhost配置文件中代理指令。这是一个例子:

server {
    listen 80 default_server;
    server_name _;

    include expires.conf;

    location / {
        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://172.17.0.1:81;
        proxy_http_version 1.1;
    }
}

2)第二种方法通常与dnsmasq配置一起使用。 使用thisthis链接获取更详细的信息和配置示例。