在Apache Docker容器中运行虚拟主机

时间:2019-05-01 15:58:58

标签: php laravel apache docker

我在同一个apache容器中有两个php应用程序,我试图在端口上运行其中的一个,因为它需要通过根域而不是子文件夹进行访问。

我想在端口8060上运行该应用程序,我曾尝试使用apache虚拟主机来运行该应用程序,但它不会加载仅表示连接被拒绝的页面(http://192.168.99.100:8060/)。但是,普通的根ip-http://192.168.99.100可以正常工作。 我的docker文件如下

String PLATE = "PLATE1";
Optional<Integer> parkingSpaceId = zone1.entrySet().stream()  // stream all of the entries in the zone1 Map
    .filter(e -> e.getValue().equals())                       // filter out all that don't have the correct plate
    .findFirst()                                              // there should be 0 or 1 of these, so we can stop as soon as we find the first one

if (parkingSpaceId.isPresent()) {
    zone1.remove(parkingSpaceId.get());  // remove that space from the map
} else {
    System.out.println("That number plate doesn't exist!");
}

我的Apache配置

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

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

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

感谢@David Maze,我发现了在我的apache配置顶部添加了listen指令并更改了端口号的问题。

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配置

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>

答案 1 :(得分:0)

这是一个解决方案-逐步:

步骤1:

extra_hosts中添加/更新hostnamedomainnamedocker-compose.yml,在我的情况下,我正在PORT 80上运行它。

这就是我的php服务在docker-compose.yml文件中的样子。

php:
   build: .
   image: php:7.2-apache
   working_dir: /var/www/html
   volumes:
     - ./:/var/www/html
     - ./php.ini:/usr/local/etc/php/php.ini
   extra_hosts:
     - "lara.local:127.0.0.1"
   hostname: lara.local
   domainname: local 
   ports:
     - 80:80  
   environment:
     - "DB_PORT=3306"
     - "DB_HOST=database"

步骤2:
使用以下行更新您的hosts文件:

127.0.0.1 lara.local

步骤3:通过运行此命令测试我们的主机名

docker exec -it <your-php-container-name> hostname

如果看到输出lara.local,那么您就很好了!

第4步:重建应用

docker-compose build

第5步::启动服务并检查应用程序是否在http://lara.local上运行

docker-compose up -d

注意::如果您使用其他端口,例如8080,那么它将是http://lara.local:8080

  

PS。如果您想更改DocumentRoot,请ssh到您的容器并   cd /etc/apache2/sites-available/000-default.conf并根据需要更改DocumentRoot路径。