在apache docker容器中运行虚拟主机

I have two php applications in the same apache container and I'm trying to run one of them on a port since it needs to be accessible via a root domain and not a subfolder.

I want to run the application on port 8060 which I've tried doing using apache virtual hosts but it won't load the page (http://192.168.99.100:8060/) it just says connection refused. However the normal root ip - http://192.168.99.100 works fine. My docker file is as follows

version: '3.2'
  services:
    php-apache:
      build:
        context: ./apache-php
      ports:
        - 80:80
        - 8060:8060

      expose:
        - '8060'
      volumes:
        - ./DocumentRoot:/var/www/html:z

My apache configuration

<VirtualHost *:60>
    DocumentRoot /var/www/html/api
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Any help would be greatly appreciated.

dounabi6295
dounabi6295 我明白你在说什么,但答案可能与其中任何标签无关,但它是一个运行PhpLaravel的docker容器我不知道问题直接与之相关。
一年多之前 回复
dongzhou1865
dongzhou1865 这与PHP,Laravel或Docker有什么关系?请不要使用不必要的标签
一年多之前 回复
dongpin1059
dongpin1059 您的VirtualHost块与您的端口不匹配:阻止;我想你在Apache配置中也需要一个Listen指令。(公开:块是多余的。)
一年多之前 回复

1个回答

Thanks to @David Maze I found the problem I added the listen directives to the top of my apache configuration and changed the port numbers.

docker-compose.yml

version: '3.2'
services:
  php-apache:
    build:
      context: ./apache-php
    ports:
      - 80:80
      - 8060:8060

    volumes:
      - ./DocumentRoot:/var/www/html:z

Apache config

Listen 80
Listen 8060

<VirtualHost *:8060>
    DocumentRoot /var/www/html/api
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Directory structure

apache-php
   ¬ sqlite3_ext
   ¬ 000-default.conf (Apache config)
   ¬ Dockerfile
   ¬ php.ini
docker-compose.yml

Dockerfile

FROM php:7.2.1-apache
RUN docker-php-ext-install pdo pdo_mysql mysqli

# Enable apache rewrite
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf

#Install spatialite and create symlink for libproj.so.0
COPY sqlite3_ext /etc/sqlite3_ext
RUN apt-get update && apt-get -y install gdal-bin
RUN ln -s /usr/lib/x86_64-linux-gnu/libproj.so.12 /usr/lib/x86_64-linux-gnu/libproj.so.0

#Install gd library for images
RUN apt-get install libpng-dev libfreetype6-dev libjpeg62-turbo-dev -qy \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install gd

#Copy php ini
COPY php.ini /usr/local/etc/php/php.ini
RUN a2enmod rewrite
dsgw3315
dsgw3315 让我们在聊天中继续讨论。
一年多之前 回复
doulouli8686
doulouli8686 我不太喜欢magento,但它仍然运行在apache上,所以我看看这篇文章linode.com/docs/web-servers/apache-tips-and-tricks / ... 使用上面的代码复制你的apache配置它可能不会被称为000-default.conf,但是如果你登录到容器并查看/ etc,你应该能够在apache文件夹中找到它的名字。
一年多之前 回复
duanmei1885
duanmei1885 实际上我在Docker上使用Magento2现在我的Magento2地址是http:// localhost / magento231 /现在我想把它更改为http://something.com怎么能转移它?
一年多之前 回复
ds211107
ds211107 不知道你的docker设置是什么,但是我的docker compose.yml中的“context:./ apache-php”引用了一个Dockerfile,如上所示。 然后在我的Dockerfile中,我在第5行(见上文)中添加了一个命令,用容器默认的apache config替换我的自定义apache配置。 我已经更新了我的答案,希望这会有所帮助。
一年多之前 回复
douyao2529
douyao2529 先生,我已添加文件夹名称vhost docker文件位于vhost文件夹中。 vhost为我的域名提供了另一个文件夹名称www。 我在哪里放置apache配置文件
一年多之前 回复
dongpu9852
dongpu9852 你能给我一些关于你想要设置什么类型的docker容器的更多细节。
一年多之前 回复
dscw1223
dscw1223 先生真的对不起,你能不能一步一步帮助我如何安装虚拟主机?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐