web-dev-qa-db-ja.com

Apache Dockerコンテナーでの仮想ホストの実行

同じApacheコンテナーに2つのphpアプリケーションがあり、それらの1つをサブフォルダーではなくルートドメイン経由でアクセスできる必要があるため、ポートで実行しようとしています。

Apache仮想ホストを使用して試行したポート8060でアプリケーションを実行したいのですが、ページが読み込まれません( http://192.168.99.100:8060/ )接続と表示されます拒否した。ただし、通常のルートIP- http://192.168.99.1 は正常に機能します。私のドッカーファイルは次のとおりです

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

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

私のApache設定

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

どんな助けでも大歓迎です。

3
Luke.T

これが解決策です-ステップバイステップ:

ステップ1:

追加/更新extra_hostshostnamedomainnameおよびdocker-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パスを変更します。

0
Hardik Raval