Rularea unei aplicații PHP într-un container
- 1 minute de citit
- 2 exemple de cod în YAML
Disponibil și în English
Salut 👋,
În articolul de luna aceasta vă arăt cum să rulați o aplicație PHP într-un container.
Sunt un mare fan al forumurilor online, iar majoritatea software-ului pentru forumuri este scris în PHP. Ca să le evaluez rapid, am vrut să le pot rula și instala local.
Am ajuns la acest fișier docker-compose
services: nginx: build: context: ./ dockerfile: nginx.dockerfile ports: - "8080:80" # schimbă portul 10080 cu orice alt port volumes: - ./config/nginx/conf.d:/etc/nginx/conf.d:z - ./.data/nginx:/var/log/nginx:z - application:/var/www/html:z - composer:/root/.composer:z php: build: context: ./ dockerfile: php83.dockerfile volumes: - ./config/php.ini:/usr/local/etc/php/php.ini:z - application:/var/www/html:z - composer:/root/.composer:z database: image: "postgres:latest" ports: - 15432:5432 environment: POSTGRES_PASSWORD: denis POSTGRES_USER: batman volumes: - ./.data/postgres/:/var/lib/postgresql/data/:z maria: image: mariadb restart: always ports: - 13306:3306 environment: MARIADB_ROOT_PASSWORD: example volumes: - ./.data/maria/:/var/lib/mysql:zvolumes: composer: application: driver: local driver_opts: type: none device: ./application o: bindTot ce trebuie să faceți este să puneți aplicația PHP în directorul ./application și să rulați:
podman compose up # sau docker compose upFișierul configurează următoarele componente:
- php - Runtime-ul PHP.
- nginx - Serverul web Nginx care servește cererile. Îl puteți personaliza editând
./config/nginx/conf.d/default.conf - database - Rulează o bază de date PostgresSQL care își păstrează datele în directorul local
./.data. - maria - Rulează o bază de date MariaDB care își păstrează datele în directorul local
./.data.
Este puțin probabil să aveți nevoie de ambele baze de date pornite în același timp, nu ezitați să ștergeți una dintre ele. Unele aplicații PHP funcționează cu PostgresSQL, iar altele funcționează doar cu MariaDB/MySQL.
Vă mulțumesc că ați citit. Dacă aveți întrebări, nu ezitați să mă contactați pe @mastodon.
Apropo, folosesc această metodă pentru a găzdui forumul meu.
Codul complet este disponibil pe forge: https://gitlab.nuculabs.dev/dnutiu/containerized-php-application