使用nginx-proxy在Docker容器中运行多个开发项目

据我了解docker-compose文件,使用docker-compose up命令,加载图像并启动容器。 相反,在Dockerfile docker build命令中使用Dockerfile文件只会创build图像。 我想我在这里失去了一些东西,因为事情没有按照我的想法工作。

遵循bitnami / wordpress指令,我使用docker组装了一个安装正常运行。 然后可以通过本地主机访问: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:容器之间的代理的一些灵感,我想出了以下内容:

 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时,我得到了一个默认的/页面索引,这表明我不知何故在那里有中途,但不是所有的方式。 看着本地文件夹,他们得到创build,但似乎像wordpress-persistence没有得到填充,这可以解释在浏览器中的默认视图。

有什么想法为什么这不如预期? 有什么明显的我错过了?

1)对于第一种方法,您需要“完成”configuration。 如果你没有一个正在运行的web服务器(nginx,apache等)(在端口80上) – 只需将端口从81更改为80

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

并将logging“ 127.0.0.1 domain.com.dev ”添加到您的hosts文件(在Linux中的/etc/host的)。

PS你可以改变端口从8880在第二种方法 – 它将工作,而无需更改hosts文件

如果您在端口80上运行wevserver,则需要在虚拟主机configuration文件中指定代理指令。 这里是一个例子:

 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)第二种方法通常与dnsmasqconfiguration一起使用。 使用这个和这个链接来获得更详细的信息和configuration的例子。