首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Docker中配置主机访问Apache ServeName

如何在Docker中配置主机访问Apache ServeName
EN

Stack Overflow用户
提问于 2018-06-05 02:29:57
回答 2查看 2.1K关注 0票数 0

如何配置我的Dockerfile或docker-compose,以便我的主机可以解析像http://myapp.env这样的ServerName而不是http://localhost:8080?!

我尝试使用容器中的ip配置我的本地hosts文件,但没有成功,如下所示

172.20.0.3 goforce.env

我的Dockerfile

代码语言:javascript
复制
FROM php:7.2-apache

LABEL maintainer="rIckSanchez"
LABEL project="MyApp"

COPY .docker/php/php.ini /usr/local/etc/php/
COPY .docker/apache/000-default.conf /etc/apache2/sites-available/
COPY . /srv/app

RUN apt-get update && apt-get install --no-install-recommends -y \
    wget \
    nano \
    git \
    unzip \
    iputils-ping

# Install PHP extensions deps
RUN apt-get update \
    && apt-get install --no-install-recommends -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        zlib1g-dev \
        libicu-dev \
        g++ \
        unixodbc-dev \
        libxml2-dev \
        libaio-dev \
        libmemcached-dev \
        freetds-dev \
        libssl-dev \
        openssl

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- \
        --install-dir=/usr/local/bin \
        --filename=composer

# Install PHP extensions
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-configure pdo_dblib --with-libdir=/lib/x86_64-linux-gnu \
    && pecl install sqlsrv-4.1.6.1 \
    && pecl install pdo_sqlsrv-4.1.6.1 \
    && pecl install redis \
    && pecl install memcached \
    && docker-php-ext-install \
            iconv \
            mbstring \
            intl \
            gd \
            mysqli \
            pdo_mysql \
            pdo_dblib \
            soap \
            sockets \
            zip \
            pcntl \
            ftp \
    && docker-php-ext-enable \
            sqlsrv \
            pdo_sqlsrv \
            redis \
            memcached \
            opcache


RUN a2enmod rewrite negotiation

RUN chown -R www-data:www-data /srv/app

RUN service apache2 restart

我的docker-compose

代码语言:javascript
复制
version: "3"
networks:
  app-tier:
    driver: bridge
services:
  app:
    image: laravel-app
    container_name: laravel-app
    networks:
      - app-tier
    build:
      context: .
      dockerfile: .docker/Dockerfile
    depends_on:
      - redis
    ports:
      - 8080:80
    volumes:
      - .:/srv/app

  redis:
    image: redis:4-alpine
    container_name: laravel-redis
    networks:
      - app-tier
    ports:
      - 16379:6379
    volumes:
      - redis:/data

volumes:
  redis:
    driver: "local"

我的000-default.conf文件

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName myapp.env
    ServerAdmin webmaster@localhost
    DocumentRoot /srv/app/public
    <Directory "/srv/app/public">
    AllowOverride all
    Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EN

回答 2

Stack Overflow用户

发布于 2018-06-05 07:26:20

您的docker web服务器端口80映射到本地主机端口8080。绕过localhost看不到docker私有网络的事实。dns将无法将流量映射到某些端口,但您可以通过将以下行添加到/etc/ goforce.env:8080文件来访问主机:

代码语言:javascript
复制
127.0.0.1 goforce.env 

如果你只想使用goforce.env,你应该改变你的docker-compose:

代码语言:javascript
复制
ports:
  - 8080:80 -> to 80:80

或者,您可以在主机上运行apache代理,并将端口80指向8080 (如果必须同时在主机和docker服务器上运行apache )。

票数 0
EN

Stack Overflow用户

发布于 2018-06-05 14:45:22

尝试使用nginx作为应用程序的反向代理。检查此url

Multiple docker containers accessible by nginx reverse proxy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50686719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档