AI News Hub Logo

AI News Hub

Run PHP and MySQL in Docker

DEV Community
Rafli Zocky

It works on my machine. 1. Create a new directory . ├── docker-compose.yml ├── Dockerfile ├── .env.example ├── README.md └── src/ └── index.php 2. Create docker-compose.yml version: '3.8' services: app: build: . container_name: php_app ports: - "8080:80" volumes: - ./src:/var/www/html depends_on: db: condition: service_healthy env_file: - .env networks: - app_network db: image: mysql:8.0 container_name: php_db environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} MYSQL_DATABASE: ${DB_DATABASE} MYSQL_USER: ${DB_USERNAME} MYSQL_PASSWORD: ${DB_PASSWORD} ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql env_file: - .env healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${DB_ROOT_PASSWORD}"] interval: 5s timeout: 10s retries: 10 networks: - app_network phpmyadmin: image: phpmyadmin/phpmyadmin depends_on: db: condition: service_healthy ports: - 8081:80 environment: PMA_HOST: db MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} PMA_ARBITRARY: ${PMA_ARBITRARY} env_file: - .env networks: - app_network volumes: mysql_data: networks: app_network: driver: bridge 3. Create Dockerfile FROM php:8.2-apache RUN docker-php-ext-install pdo pdo_mysql mysqli RUN a2enmod rewrite 4. Create src/index.php PDO::ERRMODE_EXCEPTION] ); $connected = true; echo "Database connection successful!"; $stmt = $pdo->query("SELECT VERSION()"); echo "MySQL version: " . $stmt->fetchColumn() . ""; } catch (PDOException $e) { if (time() - $start >= $wait) { echo "Connection failed after $wait seconds"; echo "" . $e->getMessage() . ""; } sleep(2); } } 5. Create .env DB_ROOT_PASSWORD=rootpassword DB_DATABASE=myapp DB_USERNAME=myuser DB_PASSWORD=mypassword PMA_ARBITRARY=1 # Start everything docker-compose up -d # Check if running docker-compose ps # Stop everything docker-compose down PHP App: http://localhost:8080 phpMyAdmin: http://localhost:8081 (server: db, username: root, password: rootpassword) Full code: raflizocky/php-docker Get Docker | Docker Docs php — Official Image | Docker Hub mysql — Official Image | Docker Hub Need help building your app? raflizocky.netlify.app ☕ Support my writing: paypal.me/raflizocky · saweria.co/raflizocky