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.
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 etcd /etc/Apache2/sites-available/000-default.conf
et modifiez le chemin d'accès DocumentRoot selon vos besoins.