首页 > 解决方案 > 通过 Docker compose 文件配置本地代理?

问题描述

我有一张我已经使用了很长时间的图像,现在效果很好。它允许我启动一个新项目,并通过 compose 文件,我拥有开始运行所需的一切。我一直感到沮丧的一件事是让一些代理为本地开发工作显然很复杂。

目前我得到了一个 Web 服务器,它允许我通过 localhost 访问正在运行的容器。为了我自己的理智,我希望能够拥有 myproject.test 或类似的东西。无论如何这可以通过撰写文件来完成吗?我已经尝试搜索了好几天,但我似乎无法找到一种方法来做到这一点,但它似乎不应该那么难。

我的撰写文件如下所示:

version: ‘2’

services:
  webserver:
    build: ./docker/webserver
    image: perch
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./www:/var/www/html
    links:
      - db
    env_file:
      - web-variables.env

  db:
    image: mysql:5.7
    command: mysqld --sql_mode=""
    ports: 
      - "3306:3306"
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=xxx
      - MYSQL_DATABASE=db_xxx

我的 Dockerfile:

FROM php:7.2-apache
RUN apt-get update -y && apt-get install -y \
        mcrypt \
        imagemagick \
        libpng-dev \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        curl \
        libcurl4-openssl-dev \
        libxpm-dev \
        libvpx-dev \
    && docker-php-ext-configure gd \
    --with-freetype-dir=/usr/lib/x86_64-linux-gnu/ \
    --with-jpeg-dir=/usr/lib/x86_64-linux-gnu/ \
    --with-xpm-dir=/usr/lib/x86_64-linux-gnu/ \
    --with-vpx-dir=/usr/lib/x86_64-linux-gnu/ \
    && docker-php-ext-install \
        pdo \
        pdo_mysql \
        gd \
        curl \
    && a2enmod \
        rewrite \
        ssl \
        actions \
        include \
        cgi \
    && service apache2 restart

标签: docker

解决方案


AFAIK,你不能通过配置你的来做到这一点docker-compose.yml(至少,我知道还没有图像可以使这成为可能——但实际上这将是一件很酷的事情!)

可以做的是在网络服务器的容器内为您的反向代理安装一个预先配置的配置文件,然后根据您的需要进行调整。你不能动态地做的是让你的浏览器通过点击进入你的反向代理http://myproject.test。*你必须为此配置你的/etc/hosts文件。当然,如果这对您来说足够的话,您可以在自己的机器上执行此操作。

(*) 好的,您可以这样做,但这似乎不是正确的做法,如果您有其他想法,请纠正我。


推荐阅读