A Docker-tárolók az alkalmazást környezetekben hordozhatóvá teszik. Ha megvan a tároló képe, bárhol használható, ahol a Docker elérhető. Így tárolhatja a PHP webalkalmazásokat az Apache szerver használatával.
Fel fogjuk használni a tisztviselőt PHP Docker kép mint a bázisunk. Az Apache-ban előre konfigurált változatok rendelkezésre állnak, így nem kell magának telepítenie a webszervert. A PHP alapkép kényelmi segédprogramokat is kínál a PHP kiterjesztések kezeléséhez.
Dockerfájl létrehozása
A Docker képek a Dockerfile
. Ez a fájl a kép elkészítéséhez használt utasításokat tartalmazza. Az utasítások tartalmazzák COPY
, fájlok és mappák másolásához a tárolóba, és RUN
, amely parancsot futtat a tárolóban.
Egy egyszerű PHP-oldalt futtathat, ha a fájljait egyszerűen képre másolja php:8.0-apache
.
FROM php:8.0-apache
WORKDIR /var/www/html
COPY index.php index.php
COPY src/ src
EXPOSE 80
Ez Dockerfile
veszi index.php
és src
a munkakönyvtárunkból, és átmásolja őket az Apache dokumentumgyökérbe. Most elkészítheti a képet, és elindíthat belőle egy tárolót. Láthatná, hogy webhelyét az Apache szolgálja ki.
docker build -t my-php-site:latest .
docker run -d -p 80:80 my-php-site:latest
A PHP Docker képek Apache dokumentumgyökere az alapértelmezett Debian helyen található /var/www/html
. Az WORKDIR
utasítás a Dockerfile
azt jelenti, hogy a következő parancsok a dokumentumgyökérben kerülnek végrehajtásra.
Az Apache kiteszi magát az alapértelmezett 80-as webszerver portra EXPOSE
irányelv a Dockerfile
ezt jelzi. A port kifejezett kimutatásával használhatja a -P
zászlóval docker run
hogy véletlenszerű gazdagép-portot automatikusan összekötjön a tároló 80-as portjával.
Az Apache konfigurációjának testreszabása
A hivatalos PHP / Apache képek a Debianon alapulnak. Használhatja a apt
csomagkezelő a szükséges szoftverek hozzáadásához.
Teljes hozzáférést kap az Apache beépített eszközeihez is. Te tudod használni a2enmod
/a2dismod
modulok és a2ensite
/a2dissite
kölcsönhatásba lépni a virtuális gazdagépekkel.
Az Apache konfigurációs fájl alapértelmezett értéke: /etc/apache2/apache2.conf
. Adjon hozzá sorokat ehhez a fájlhoz, vagy cserélje le teljesen, hogy kibővítse az Apache konfigurációt.
Az egyik változtatás, amelyet mindig érdemes megtenni, az Apache kifejezett beállítása ServerName
. Ez leállítja a „nem tudja megbízhatóan meghatározni a kiszolgálónevet” figyelmeztetést, amely általában a tároló naplóiban jelenik meg.
Általában hozzá kell adnia saját Apache virtuális gazdagépét is. Ez lehetővé teszi az egyéni konfiguráció beállítását az Apache-on felül 000-default
oldal biztosítja. Így hajthatja végre ezeket a módosításokat.
COPY my-apache-site.conf /etc/apache2/sites-available/my-apache-site.conf
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
a2enmod rewrite &&
a2dissite 000-default &&
a2ensite my-apache-site &&
service apache2 restart
Ez a példa letiltja az alapértelmezett helyet, engedélyezi az egyéni webhelyet és újraindítja az Apache alkalmazását a változtatások végrehajtására. Az mod_rewrite
modul is engedélyezve van, lehetővé téve a Rewrite
irányelvek .htaccess
fájlokat. Érdemes engedélyeznie más modulokat is, például headers
ha a konfiguráció kölcsönhatásba lép a válaszfejlécekkel.
PHP kiterjesztések hozzáadása
A PHP Docker képek beépített kiterjesztés-kezelő segédprogramokkal vannak ellátva. Egyes bővítmények alapértelmezés szerint engedélyezve vannak – futtatással ellenőrizheti, hogy mi áll rendelkezésre php -m
futó konténeren belül.
Számos általános kiterjesztés telepíthető a docker-php-ext-install
:
docker-php-ext-install pdo_mysql
Néhány bővítményt telepítésük előtt konfigurálni kell. Te tudod használni docker-php-ext-configure
a telepítés előtti konfigurálás elvégzéséhez. Az elérhető opciók kiterjesztésenként változhatnak. Olvassa el a kiterjesztés kézikönyvoldalát, hogy meghatározza az elérhető zászlókat.
RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ &&
docker-php-ext-install gd
Használhatja a PECL-en keresztül terjesztett kiterjesztéseket is. Ezek a bővítmények kétlépcsős telepítési eljárást igényelnek. Először telepítse a PECL csomagot, majd használja docker-php-ext-enable
hogy regisztrálja a kiterjesztést a PHP telepítésével.
RUN apt-get install -y libmcached-dev zlib1g-dev &&
pecl install memcached-3.1.5 &&
docker-php-ext-enable memcached
PHP konfiguráció
A Docker képek előre konfigurálva vannak a PHP konfigurációs fájlok betöltéséhez /usr/local/etc/php/conf.d
. Adja hozzá a sajátját .ini
fájlt ebbe a könyvtárba. A PHP futás közben tartalmazza a tartalmát, felülírva a meglévő értékeket. Ez az alapértelmezett konfiguráció kiterjesztésének ajánlott módja.
A konfigurációs könyvtár elérési útja a jövőben megváltozhat. Az aktuális helyét a $PHP_INI_DIR
környezeti változó. Jelenleg megoldódik /usr/local/etc/php/conf.d
.
A zeneszerző használata
A zeneszerző alapértelmezés szerint nem érhető el. A zeneszerző a PHP-től függetlenül létező közösségi erőfeszítés. Manuálisan telepítenie kell, ha Docker-tárolóban szeretné használni.
A Composer használatának legjobb építési módja az, ha az eszköz saját Docker képére hivatkozik a többlépcsős felépítés. Használat COPY --from
bevinni a Composer bináris fájlt a PHP konténerbe; ezután a Composer programot a szokásos módon használhatja a projekt függőségeinek telepítéséhez.
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install --no-dev
Ennek a megközelítésnek a használata csökkenti a bonyolultságot. Nem szükséges letöltenie és futtatnia a Composer telepítési parancsfájlt. Hivatkozással composer:2
, A Docker lehúzza a képet, majd kimásolja a Composer bináris fájlt.
Egyéni belépési parancsfájlok
Előfordulhat, hogy egyéni belépési pont szkriptet kell használnia, ha az alkalmazás-migrációkat a fő szerver futásidejének megkezdése előtt szeretné futtatni. Felülírhatja a tárolót ENTRYPOINT
hogy saját indítási sorrendjét használja.
A tároló végrehajtását a szokásos módon végrehajthatja végrehajtással apache2-foreground
. Ez az Apache-t futtatja az előtérben, megakadályozva a tároló kilépését a belépési parancsfájl befejezése után.
ENTRYPOINT ["bash", "/Docker.sh"]
Docker.sh
tartalom:
php app.php my-migration-command # run migrations
service cron start # start some services
exec apache2-foreground # main execution
Következtetés
A PHP webszolgáltatás dokkolása egyszerű a hivatalos képek használatakor. Könnyen beállíthatja az Apache és a PHP kiterjesztéseivel és saját konfigurációs fájljaival.
A legnagyobb valószínűséggel nehézségekkel szembesülsz, ha olyan harmadik féltől származó közösségi kiegészítőket próbálsz használni, mint a Composer. Ezeket alapértelmezés szerint nem tartalmazzák, ezért többlépcsős Docker buildeket vagy kézi telepítési eljárásokat kell használnia.
A Docker használata sokoldalúvá teszi az alkalmazást abban, hogy hogyan és hol telepítse. Képével csak egy használatával pörgetheti fel webhelyének működő telepítését docker build
és docker run
a terminálodban.