web-dev-qa-db-fra.com

Exécution d'hôtes virtuels dans le conteneur Docker Apache

J'ai deux applications php dans le même conteneur Apache et j'essaie d'exécuter l'une d'entre elles sur un port car il doit être accessible via un domaine racine et non un sous-dossier.

Je veux exécuter l'application sur le port 8060, ce que j'ai essayé de faire en utilisant des hôtes virtuels Apache, mais cela ne chargera pas la page ( http://192.168.99.100:8060/ ) il dit simplement connexion refusé. Cependant, l'IP racine normale - http://192.168.99.1 fonctionne bien. Mon fichier Docker est le suivant

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

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

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

Toute aide serait grandement appréciée.

3
Luke.T

Voici une solution - étape par étape:

Étape 1:

Ajouter/Mettre à jour extra_hosts, hostname, domainname et dans docker-compose.yml et dans mon cas, je l'exécute sur PORT 80.

Voici à quoi ressemble mon service php dans docker-compose.yml fichier.

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"

Étape 2:
Mettez à jour votre fichier hosts avec la ligne suivante:

127.0.0.1 lara.local

Étape 3: Testez notre nom d'hôte en exécutant cette commande

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

Si vous voyez la sortie lara.local Alors tu peux y aller!

Étape 4: Reconstruire l'application

docker-compose build

Étape 5: Démarrez les services et vérifiez que l'application fonctionne à http://lara.local

docker-compose up -d

Remarque: Si vous utilisez un port différent, par exemple 8080 alors ce serait http://lara.local:8080

PS. Si vous voulez changer le DocumentRoot puis ssh dans votre conteneur et cd /etc/Apache2/sites-available/000-default.conf et modifiez le chemin d'accès DocumentRoot selon vos besoins.

0
Hardik Raval