使用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你可以改变端口从88
到80
在第二种方法 – 它将工作,而无需更改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)第二种方法通常与dnsmasq
configuration一起使用。 使用这个和这个链接来获得更详细的信息和configuration的例子。
- 我如何将一个NodeJS应用绑定到在AWS上的Docker容器中运行的MongoDB?
- AWS Elastic Beanstalk Docker PHP应用程序
- 在docker中不能以守护进程运行puma
- 如何在Docker Hub中从源代码构buildEmacs? BSS和堆之间的差距
- 从Mac上的本地docker图像连接到meteor芒果
- 如何在docker中有“运行”命令 – 撰写类似于docker文件?
- 将iptables设置为false后,Docker不能启动
- Eclipse Che不会启动:'java.lang.ClassNotFoundException org.apache.juli.ClassLoaderLogManager'
- 如何在Linux上使用Docker和Azure Web App部署Angular 4应用程序