PHP-sovelluksen kontittaminen Dockerilla
Rakentakaa Docker-levykuva PHP:lle ja Nginxille sekä orkestroikaa se Docker Composella.
PHP-sovelluksen kontittaminen Dockerilla on ilmainen PHP Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu PHP Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. PHP Academy-kurssilla on yhteensä 4 oppituntia.
Miksi Dockeria käytetään PHP:ssä?
Docker pakkaa sovelluksen riippuvuuksineen siirrettäväksi säilökuvaksi. Sama kuva toimii samalla tavalla kehityksessä, CI:ssä ja tuotannossa, mikä poistaa ”toimii minun koneellani” -ongelmat.
PHP:n Dockerfilen perusteet
PHP + Nginx -sovelluksen minimaalinen Dockerfile.
# Dockerfile
FROM php:8.3-fpm-alpine
# Install extensions
RUN docker-php-ext-install pdo pdo_mysql opcache
# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader
COPY . .
RUN chown -R www-data:www-data /app/storage /app/bootstrap/cacheMonivaiheinen koonti
Käyttäkää monivaiheisia koonteja lopullisen kuvan pitämiseksi pienenä: asentakaa koontityökalut yhteen vaiheeseen ja kopioikaa lopulliseen kuvaan vain tuotokset.
# Stage 1: builder
FROM composer:2 AS builder
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader
# Stage 2: runtime
FROM php:8.3-fpm-alpine
WORKDIR /app
COPY --from=builder /app/vendor ./vendor
COPY . .docker-compose.yml
Orkestroikaa useita palveluita (PHP-FPM, Nginx, MySQL, Redis) Docker Composella.
# docker-compose.yml
services:
app:
build: .
volumes:
- .:/app
nginx:
image: nginx:alpine
ports: ["80:80"]
volumes:
- .:/app
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
mysql:
image: mysql:8
environment:
MYSQL_DATABASE: myapp
MYSQL_ROOT_PASSWORD: secret
volumes:
- db_data:/var/lib/mysql
redis:
image: redis:alpine
volumes:
db_data:Nginx-säilön määritys
Liittäkää mukautettu Nginx-määritys PHP-FPM-pyyntöjen välittämistä varten.
# docker/nginx.conf
server {
listen 80;
root /app/public;
index index.php;
location / { try_files $uri /index.php?$query_string; }
location ~ \.php$ {
fastcgi_pass app:9000; # service name from docker-compose
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}Ympäristömuuttujat
Välittäkää ympäristömuuttujat säilöille – älkää koskaan upottako salaisuuksia kuviin.
# docker-compose.yml:
services:
app:
env_file: .env
# or explicit:
environment:
- APP_ENV=production
- DB_HOST=mysqlLaravel Artisan -komennot
Suorittakaa Artisan-komennot säilön sisällä.
$ docker compose exec app php artisan migrate
$ docker compose exec app php artisan config:cache
$ docker compose exec app php artisan queue:workKuntotarkistukset
Lisätkää kuntotarkistukset, jotta orkestroijat (Kubernetes, ECS) tietävät, milloin säilö on valmis.
# Dockerfile:
HEALTHCHECK --interval=30s --timeout=5s \
CMD curl -f http://localhost/health || exit 1Kuvien koonti ja julkaiseminen
Koontakaa kuva ja julkaiskaa se rekisteriin (Docker Hub, ECR, GHCR).
$ docker build -t myorg/myapp:1.0.0 .
$ docker push myorg/myapp:1.0.0Kubernetes-käyttöönotto
Määrittäkää Kubernetesissa Deployment- ja Service-resurssit käyttämällä omaa kuvaanne. Julkaiskaa uudet versiot komennolla kubectl set image tai päivittämällä YAML-tiedosto ja ottamalla se käyttöön.
Tuotantoympäristön suojaaminen
Dockerin tuotantokäytännöt: käyttäkää ei-root-käyttäjää, vain luku -tilassa olevaa juuritiedostojärjestelmää ja minimaalista peruskuvaa (Alpine), älkää sisällyttäkö kehitysriippuvuuksia, kiinnittäkää kuvien tunnisteet ja etsikää CVE-haavoittuvuuksia komennolla docker scout.
Yhteenveto
Luokaa Dockerfile PHP-FPM:ää ja Composeria varten. Käyttäkää docker-composea paikalliseen kehitykseen Nginx-, MySQL- ja Redis-palveluilla. Käyttäkää tuotannossa monivaiheisia koonteja, syöttäkää ympäristömuuttujat ja suorittakaa sovellus Kubernetesin tai ECS:n kautta.
Pikatarkistus
Mikä on monivaiheisten Docker-koontien tärkein hyöty?
Opi PHP tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 49
- Oppitunnit
- 195
Usein kysytyt kysymykset
Onko oppitunti ”PHP-sovelluksen kontittaminen Dockerilla” ilmainen?
Kyllä – oppitunnin ”PHP-sovelluksen kontittaminen Dockerilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko PHP Academy-kurssin, päivitä CoddyKit PROhon. PHP Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”PHP-sovelluksen kontittaminen Dockerilla”?
Rakentakaa Docker-levykuva PHP:lle ja Nginxille sekä orkestroikaa se Docker Composella. Harjoittelet PHP Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni PHP Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin PHP Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”PHP-sovelluksen kontittaminen Dockerilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä PHP Academy-oppitunnilla?
Kyllä. Jokainen PHP Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Nginx- ja PHP-FPM-määritykset
- Ympäristömuuttujat ja .env-tiedostot
- Julkaiseminen GitHub Actionsilla
- PHP-sovelluksen kontittaminen Dockerilla