使用nginx代理在docker容器中运行多个开发项目

使用nginx代理在docker容器中运行多个开发项目,nginx,docker,Nginx,Docker,据我所知,docker compose文件使用docker compose up命令加载图像并启动容器。相反,使用Dockerfile文件和docker build命令只创建图像。我想我在这里遗漏了一些东西,因为事情并不像我希望的那样运作 按照说明,我使用docker compose up d安装了一个运行良好的程序。然后可以通过localhost:81访问 version: '2' services: mariadb: image: bitnami/mariadb:latest

据我所知,
docker compose
文件使用
docker compose up
命令加载图像并启动容器。相反,使用
Dockerfile
文件和
docker build
命令只创建图像。我想我在这里遗漏了一些东西,因为事情并不像我希望的那样运作

按照说明,我使用
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的身份访问它,所以我研究了实现。根据那里的指示,并从中获得一些灵感,我得出以下结论:

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持久化
,这可以解释浏览器中的默认视图

你有没有想过为什么事情没有如预期的那样发生?很明显我遗漏了什么?

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

ports:
      - '80:80'
      - '443:443'
并将记录“
127.0.0.1 domain.com.dev
”添加到您的
hosts
文件(
/etc/host
在linux中)

注意:在第二种方法中,您可以将端口从
88
更改为
80
——它将在不更改
主机
文件的情况下工作

如果您在端口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
配置。 使用和链接可以获得更详细的信息和配置示例