Docker MySQL Environment
Docker is an essential tool for modern development, providing a consistent environment for building, shipping, and running applications. Prisma PHP leverages Docker with MySQL to create a seamless development workflow, ensuring that applications run reliably across different environments. This documentation outlines the steps to set up a Docker environment for Prisma PHP with MySQL, including Docker configuration files and instructions for setting up a local development environment with Apache and MySQL.
Docker Configuration Files
docker-compose.yml
version: "3.8"
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "80:80"
volumes:
- .:/var/www/html
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: prisma_php
MYSQL_DATABASE: prisma_php
ports:
- "3306:3306"
The docker-compose.yml file defines the services for the Docker environment. It includes a web service for the Apache server and a db service for the MySQL database, configured with environment variables for the root password and database name.
Updated .env File
# For Prisma ORM
DATABASE_URL="mysql://root:prisma_php@localhost:3306/prisma_php"
# For Prisma PHP ORM
PRISMA_PHP_ORM_DATABASE_URL="mysql://root:prisma_php@db:3306/prisma_php"
Update the .env file with the following database URLs for Prisma ORM and Prisma PHP ORM. The URLs specify the MySQL database connection details, including the root user, password, host, and port.
Updated Prisma Schema
Change the provider in your Prisma schema from postgresql to mysql:
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
Updated Prisma.php Configuration
Generate the Prisma PHP ORM configuration file using the following command: npx ppo generate and update the Prisma.php file in the Lib/Prisma/Classes directory with the following configuration:
$databaseUrl = $_ENV['PRISMA_PHP_ORM_DATABASE_URL'];
if (!$databaseUrl) {
throw new \Exception('PRISMA_PHP_ORM_DATABASE_URL not set in .env file.');
}
Update the Prisma.php file to use the PRISMA_PHP_ORM_DATABASE_URL environment variable for the database URL. This ensures that Prisma PHP ORM connects to the correct MySQL database when running in a Docker environment.