Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

phpDock

Docker Compose environment, based on Alpine Linux.

Made to be a very fast & simple macOS php development environment.
Spin up a new environment in <= 10 seconds (after you have the base images downloaded)

Including:
php-fpm, MySql,, Singlestore, Redis, Nginx, Mailhog, Composer, node, npm & yarn

Deafults to Singlestore DB.

Local Addresses

Docker Config

Docker environment can be configured in .env.phpdock.
Easily swap out images and configure docker separate from your application .env.

Use any of these in .env.phpdock, to customize your environment:

  • PHP-fpm: 8.3-latest
  • MySql Server: any valid mysql tag between 5.7 - 8.x
  • singlestore: always latest version
  • redis: always latest version

To customize more, you can always edit the docker-compose,yml.

Install

composer require madsem/phpdock --dev

Then run vendor/bin/phpdock publish, to publish the docker/ folder and phpdock files into your project directory.

Then you can start using the executable shell script like so:

vendor/bin/phpdock <command>

Create an Alias

# bashalias phpdock="./vendor/bin/phpdock"# fishalias phpdock "./vendor/bin/phpdock"

Start a new Project

phpdock build

This will build the containers for your project.

After the containers are ready, run phpdock up to start the containers.

Then you can log into the app, nginx, mysql or redis services as follows:

phpdock ssh <service name>

To shut down but not destroy your work, run phpdock down,
or to destroy the containers, images and associated volumes phpdock destroy.

To rebuild containers after config changes, run phpdock rebuild:

# rebuild everything
phpdock rebuild
phpdock rebuild all
# rebuild only a particular service
phpdock rebuild app
phpdock rebuild web

Update phpDock

composer require madsem/phpdock --dev
phpdock update

This will publish the new phpdock files, and append .bak to old files & the docker directory.

For more commands, run phpdock help.

Example For a Laravel Project

Laravel env file using the phpdock default configuration:

# Project ENVDB_CONNECTION=mysqlDB_HOST=mysqlDB_PORT=3306DB_DATABASE=phpdockDB_USERNAME=phpdockDB_PASSWORD=secretREDIS_HOST=redisCACHE_DRIVER=redisSESSION_DRIVER=redisQUEUE_DRIVER=redisMAIL_HOST=mailMAIL_PORT=1025

Config for Mysql:

app:
build:
context: ./docker/appdockerfile: Dockerfileargs:
- MY_PHP_VERSION=${PHP_VERSION}volumes:
- php-sock:/socket
- ./:/var/www/htmlnetworks:
- phpdockdepends_on:
mysql:
condition: service_healthy
mysql:
build:
context: ./docker/mysqldockerfile: Dockerfileargs:
- MY_MYSQL_VERSION=${MYSQL_VERSION}ports:
- ${DB_PORT:-3306}:3306volumes:
- dbdata:/var/lib/mysqlenvironment:
MYSQL_ROOT_PASSWORD: "${DB_PASS:-secret}"MYSQL_DATABASE: "${DB_NAME:-phpdock}"MYSQL_USER: "${DB_USER:-phpdock}"MYSQL_PASSWORD: "${DB_PASS:-secret}"MYSQL_ALLOW_EMPTY_PASSWORD: "yes"networks:
- phpdockhealthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]timeout: 45sinterval: 10sretries: 5

Database Manager

Connect to DB Management software like TablePlus, like this:
table plus config

phpDock Base Image Extensions Included:

[PHP Modules]
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
maxminddb
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Install Custom PHP Extensions:

phpDock uses https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions to install extensions.

This package detects your PHP version and installs the correct version. Simply add additional extensions or modifications to the docker/app/Dockerfile, like this:

RUN install-php-extensions \
csv \
grpc \
protobuf

Hat Tips :shipit:

About

Simple PHP dev environment, for Laravel or other PHP based projects.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

phpDock

Docker Compose environment, based on Alpine Linux.

Made to be a very fast & simple macOS php development environment.
Spin up a new environment in <= 10 seconds (after you have the base images downloaded)

Including:
php-fpm, MySql,, Singlestore, Redis, Nginx, Mailhog, Composer, node, npm & yarn

Deafults to Singlestore DB.

Local Addresses

Docker Config

Docker environment can be configured in .env.phpdock.
Easily swap out images and configure docker separate from your application .env.

Use any of these in .env.phpdock, to customize your environment:

  • PHP-fpm: 8.3-latest
  • MySql Server: any valid mysql tag between 5.7 - 8.x
  • singlestore: always latest version
  • redis: always latest version

To customize more, you can always edit the docker-compose,yml.

Install

composer require madsem/phpdock --dev

Then run vendor/bin/phpdock publish, to publish the docker/ folder and phpdock files into your project directory.

Then you can start using the executable shell script like so:

vendor/bin/phpdock <command>

Create an Alias

# bashalias phpdock="./vendor/bin/phpdock"# fishalias phpdock "./vendor/bin/phpdock"

Start a new Project

phpdock build

This will build the containers for your project.

After the containers are ready, run phpdock up to start the containers.

Then you can log into the app, nginx, mysql or redis services as follows:

phpdock ssh <service name>

To shut down but not destroy your work, run phpdock down,
or to destroy the containers, images and associated volumes phpdock destroy.

To rebuild containers after config changes, run phpdock rebuild:

# rebuild everything
phpdock rebuild
phpdock rebuild all
# rebuild only a particular service
phpdock rebuild app
phpdock rebuild web

Update phpDock

composer require madsem/phpdock --dev
phpdock update

This will publish the new phpdock files, and append .bak to old files & the docker directory.

For more commands, run phpdock help.

Example For a Laravel Project

Laravel env file using the phpdock default configuration:

# Project ENVDB_CONNECTION=mysqlDB_HOST=mysqlDB_PORT=3306DB_DATABASE=phpdockDB_USERNAME=phpdockDB_PASSWORD=secretREDIS_HOST=redisCACHE_DRIVER=redisSESSION_DRIVER=redisQUEUE_DRIVER=redisMAIL_HOST=mailMAIL_PORT=1025

Config for Mysql:

app:
build:
context: ./docker/appdockerfile: Dockerfileargs:
- MY_PHP_VERSION=${PHP_VERSION}volumes:
- php-sock:/socket
- ./:/var/www/htmlnetworks:
- phpdockdepends_on:
mysql:
condition: service_healthy
mysql:
build:
context: ./docker/mysqldockerfile: Dockerfileargs:
- MY_MYSQL_VERSION=${MYSQL_VERSION}ports:
- ${DB_PORT:-3306}:3306volumes:
- dbdata:/var/lib/mysqlenvironment:
MYSQL_ROOT_PASSWORD: "${DB_PASS:-secret}"MYSQL_DATABASE: "${DB_NAME:-phpdock}"MYSQL_USER: "${DB_USER:-phpdock}"MYSQL_PASSWORD: "${DB_PASS:-secret}"MYSQL_ALLOW_EMPTY_PASSWORD: "yes"networks:
- phpdockhealthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]timeout: 45sinterval: 10sretries: 5

Database Manager

Connect to DB Management software like TablePlus, like this:
table plus config

phpDock Base Image Extensions Included:

[PHP Modules]
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
maxminddb
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Install Custom PHP Extensions:

phpDock uses https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions to install extensions.

This package detects your PHP version and installs the correct version. Simply add additional extensions or modifications to the docker/app/Dockerfile, like this:

RUN install-php-extensions \
csv \
grpc \
protobuf

Hat Tips :shipit:

About

Simple PHP dev environment, for Laravel or other PHP based projects.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

phpDock

Docker Compose environment, based on Alpine Linux.

Made to be a very fast & simple macOS php development environment.
Spin up a new environment in <= 10 seconds (after you have the base images downloaded)

Including:
php-fpm, MySql,, Singlestore, Redis, Nginx, Mailhog, Composer, node, npm & yarn

Deafults to Singlestore DB.

Local Addresses

Docker Config

Docker environment can be configured in .env.phpdock.
Easily swap out images and configure docker separate from your application .env.

Use any of these in .env.phpdock, to customize your environment:

  • PHP-fpm: 8.3-latest
  • MySql Server: any valid mysql tag between 5.7 - 8.x
  • singlestore: always latest version
  • redis: always latest version

To customize more, you can always edit the docker-compose,yml.

Install

composer require madsem/phpdock --dev

Then run vendor/bin/phpdock publish, to publish the docker/ folder and phpdock files into your project directory.

Then you can start using the executable shell script like so:

vendor/bin/phpdock <command>

Create an Alias

# bashalias phpdock="./vendor/bin/phpdock"# fishalias phpdock "./vendor/bin/phpdock"

Start a new Project

phpdock build

This will build the containers for your project.

After the containers are ready, run phpdock up to start the containers.

Then you can log into the app, nginx, mysql or redis services as follows:

phpdock ssh <service name>

To shut down but not destroy your work, run phpdock down,
or to destroy the containers, images and associated volumes phpdock destroy.

To rebuild containers after config changes, run phpdock rebuild:

# rebuild everything
phpdock rebuild
phpdock rebuild all
# rebuild only a particular service
phpdock rebuild app
phpdock rebuild web

Update phpDock

composer require madsem/phpdock --dev
phpdock update

This will publish the new phpdock files, and append .bak to old files & the docker directory.

For more commands, run phpdock help.

Example For a Laravel Project

Laravel env file using the phpdock default configuration:

# Project ENVDB_CONNECTION=mysqlDB_HOST=mysqlDB_PORT=3306DB_DATABASE=phpdockDB_USERNAME=phpdockDB_PASSWORD=secretREDIS_HOST=redisCACHE_DRIVER=redisSESSION_DRIVER=redisQUEUE_DRIVER=redisMAIL_HOST=mailMAIL_PORT=1025

Config for Mysql:

app:
build:
context: ./docker/appdockerfile: Dockerfileargs:
- MY_PHP_VERSION=${PHP_VERSION}volumes:
- php-sock:/socket
- ./:/var/www/htmlnetworks:
- phpdockdepends_on:
mysql:
condition: service_healthy
mysql:
build:
context: ./docker/mysqldockerfile: Dockerfileargs:
- MY_MYSQL_VERSION=${MYSQL_VERSION}ports:
- ${DB_PORT:-3306}:3306volumes:
- dbdata:/var/lib/mysqlenvironment:
MYSQL_ROOT_PASSWORD: "${DB_PASS:-secret}"MYSQL_DATABASE: "${DB_NAME:-phpdock}"MYSQL_USER: "${DB_USER:-phpdock}"MYSQL_PASSWORD: "${DB_PASS:-secret}"MYSQL_ALLOW_EMPTY_PASSWORD: "yes"networks:
- phpdockhealthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]timeout: 45sinterval: 10sretries: 5

Database Manager

Connect to DB Management software like TablePlus, like this:
table plus config

phpDock Base Image Extensions Included:

[PHP Modules]
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
maxminddb
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Install Custom PHP Extensions:

phpDock uses https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions to install extensions.

This package detects your PHP version and installs the correct version. Simply add additional extensions or modifications to the docker/app/Dockerfile, like this:

RUN install-php-extensions \
csv \
grpc \
protobuf

Hat Tips :shipit:

About

Simple PHP dev environment, for Laravel or other PHP based projects.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

phpDock

Docker Compose environment, based on Alpine Linux.

Made to be a very fast & simple macOS php development environment.
Spin up a new environment in <= 10 seconds (after you have the base images downloaded)

Including:
php-fpm, MySql,, Singlestore, Redis, Nginx, Mailhog, Composer, node, npm & yarn

Deafults to Singlestore DB.

Local Addresses

Docker Config

Docker environment can be configured in .env.phpdock.
Easily swap out images and configure docker separate from your application .env.

Use any of these in .env.phpdock, to customize your environment:

  • PHP-fpm: 8.3-latest
  • MySql Server: any valid mysql tag between 5.7 - 8.x
  • singlestore: always latest version
  • redis: always latest version

To customize more, you can always edit the docker-compose,yml.

Install

composer require madsem/phpdock --dev

Then run vendor/bin/phpdock publish, to publish the docker/ folder and phpdock files into your project directory.

Then you can start using the executable shell script like so:

vendor/bin/phpdock <command>

Create an Alias

# bashalias phpdock="./vendor/bin/phpdock"# fishalias phpdock "./vendor/bin/phpdock"

Start a new Project

phpdock build

This will build the containers for your project.

After the containers are ready, run phpdock up to start the containers.

Then you can log into the app, nginx, mysql or redis services as follows:

phpdock ssh <service name>

To shut down but not destroy your work, run phpdock down,
or to destroy the containers, images and associated volumes phpdock destroy.

To rebuild containers after config changes, run phpdock rebuild:

# rebuild everything
phpdock rebuild
phpdock rebuild all
# rebuild only a particular service
phpdock rebuild app
phpdock rebuild web

Update phpDock

composer require madsem/phpdock --dev
phpdock update

This will publish the new phpdock files, and append .bak to old files & the docker directory.

For more commands, run phpdock help.

Example For a Laravel Project

Laravel env file using the phpdock default configuration:

# Project ENVDB_CONNECTION=mysqlDB_HOST=mysqlDB_PORT=3306DB_DATABASE=phpdockDB_USERNAME=phpdockDB_PASSWORD=secretREDIS_HOST=redisCACHE_DRIVER=redisSESSION_DRIVER=redisQUEUE_DRIVER=redisMAIL_HOST=mailMAIL_PORT=1025

Config for Mysql:

app:
build:
context: ./docker/appdockerfile: Dockerfileargs:
- MY_PHP_VERSION=${PHP_VERSION}volumes:
- php-sock:/socket
- ./:/var/www/htmlnetworks:
- phpdockdepends_on:
mysql:
condition: service_healthy
mysql:
build:
context: ./docker/mysqldockerfile: Dockerfileargs:
- MY_MYSQL_VERSION=${MYSQL_VERSION}ports:
- ${DB_PORT:-3306}:3306volumes:
- dbdata:/var/lib/mysqlenvironment:
MYSQL_ROOT_PASSWORD: "${DB_PASS:-secret}"MYSQL_DATABASE: "${DB_NAME:-phpdock}"MYSQL_USER: "${DB_USER:-phpdock}"MYSQL_PASSWORD: "${DB_PASS:-secret}"MYSQL_ALLOW_EMPTY_PASSWORD: "yes"networks:
- phpdockhealthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]timeout: 45sinterval: 10sretries: 5

Database Manager

Connect to DB Management software like TablePlus, like this:
table plus config

phpDock Base Image Extensions Included:

[PHP Modules]
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
maxminddb
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Install Custom PHP Extensions:

phpDock uses https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions to install extensions.

This package detects your PHP version and installs the correct version. Simply add additional extensions or modifications to the docker/app/Dockerfile, like this:

RUN install-php-extensions \
csv \
grpc \
protobuf

Hat Tips :shipit:

About

Simple PHP dev environment, for Laravel or other PHP based projects.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

phpDock

Docker Compose environment, based on Alpine Linux.

Made to be a very fast & simple macOS php development environment.
Spin up a new environment in <= 10 seconds (after you have the base images downloaded)

Including:
php-fpm, MySql,, Singlestore, Redis, Nginx, Mailhog, Composer, node, npm & yarn

Deafults to Singlestore DB.

Local Addresses

Docker Config

Docker environment can be configured in .env.phpdock.
Easily swap out images and configure docker separate from your application .env.

Use any of these in .env.phpdock, to customize your environment:

  • PHP-fpm: 8.3-latest
  • MySql Server: any valid mysql tag between 5.7 - 8.x
  • singlestore: always latest version
  • redis: always latest version

To customize more, you can always edit the docker-compose,yml.

Install

composer require madsem/phpdock --dev

Then run vendor/bin/phpdock publish, to publish the docker/ folder and phpdock files into your project directory.

Then you can start using the executable shell script like so:

vendor/bin/phpdock <command>

Create an Alias

# bashalias phpdock="./vendor/bin/phpdock"# fishalias phpdock "./vendor/bin/phpdock"

Start a new Project

phpdock build

This will build the containers for your project.

After the containers are ready, run phpdock up to start the containers.

Then you can log into the app, nginx, mysql or redis services as follows:

phpdock ssh <service name>

To shut down but not destroy your work, run phpdock down,
or to destroy the containers, images and associated volumes phpdock destroy.

To rebuild containers after config changes, run phpdock rebuild:

# rebuild everything
phpdock rebuild
phpdock rebuild all
# rebuild only a particular service
phpdock rebuild app
phpdock rebuild web

Update phpDock

composer require madsem/phpdock --dev
phpdock update

This will publish the new phpdock files, and append .bak to old files & the docker directory.

For more commands, run phpdock help.

Example For a Laravel Project

Laravel env file using the phpdock default configuration:

# Project ENVDB_CONNECTION=mysqlDB_HOST=mysqlDB_PORT=3306DB_DATABASE=phpdockDB_USERNAME=phpdockDB_PASSWORD=secretREDIS_HOST=redisCACHE_DRIVER=redisSESSION_DRIVER=redisQUEUE_DRIVER=redisMAIL_HOST=mailMAIL_PORT=1025

Config for Mysql:

app:
build:
context: ./docker/appdockerfile: Dockerfileargs:
- MY_PHP_VERSION=${PHP_VERSION}volumes:
- php-sock:/socket
- ./:/var/www/htmlnetworks:
- phpdockdepends_on:
mysql:
condition: service_healthy
mysql:
build:
context: ./docker/mysqldockerfile: Dockerfileargs:
- MY_MYSQL_VERSION=${MYSQL_VERSION}ports:
- ${DB_PORT:-3306}:3306volumes:
- dbdata:/var/lib/mysqlenvironment:
MYSQL_ROOT_PASSWORD: "${DB_PASS:-secret}"MYSQL_DATABASE: "${DB_NAME:-phpdock}"MYSQL_USER: "${DB_USER:-phpdock}"MYSQL_PASSWORD: "${DB_PASS:-secret}"MYSQL_ALLOW_EMPTY_PASSWORD: "yes"networks:
- phpdockhealthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]timeout: 45sinterval: 10sretries: 5

Database Manager

Connect to DB Management software like TablePlus, like this:
table plus config

phpDock Base Image Extensions Included:

[PHP Modules]
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
maxminddb
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Install Custom PHP Extensions:

phpDock uses https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions to install extensions.

This package detects your PHP version and installs the correct version. Simply add additional extensions or modifications to the docker/app/Dockerfile, like this:

RUN install-php-extensions \
csv \
grpc \
protobuf

Hat Tips :shipit:

About

Simple PHP dev environment, for Laravel or other PHP based projects.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

phpDock

Docker Compose environment, based on Alpine Linux.

Made to be a very fast & simple macOS php development environment.
Spin up a new environment in <= 10 seconds (after you have the base images downloaded)

Including:
php-fpm, MySql,, Singlestore, Redis, Nginx, Mailhog, Composer, node, npm & yarn

Deafults to Singlestore DB.

Local Addresses

Docker Config

Docker environment can be configured in .env.phpdock.
Easily swap out images and configure docker separate from your application .env.

Use any of these in .env.phpdock, to customize your environment:

  • PHP-fpm: 8.3-latest
  • MySql Server: any valid mysql tag between 5.7 - 8.x
  • singlestore: always latest version
  • redis: always latest version

To customize more, you can always edit the docker-compose,yml.

Install

composer require madsem/phpdock --dev

Then run vendor/bin/phpdock publish, to publish the docker/ folder and phpdock files into your project directory.

Then you can start using the executable shell script like so:

vendor/bin/phpdock <command>

Create an Alias

# bashalias phpdock="./vendor/bin/phpdock"# fishalias phpdock "./vendor/bin/phpdock"

Start a new Project

phpdock build

This will build the containers for your project.

After the containers are ready, run phpdock up to start the containers.

Then you can log into the app, nginx, mysql or redis services as follows:

phpdock ssh <service name>

To shut down but not destroy your work, run phpdock down,
or to destroy the containers, images and associated volumes phpdock destroy.

To rebuild containers after config changes, run phpdock rebuild:

# rebuild everything
phpdock rebuild
phpdock rebuild all
# rebuild only a particular service
phpdock rebuild app
phpdock rebuild web

Update phpDock

composer require madsem/phpdock --dev
phpdock update

This will publish the new phpdock files, and append .bak to old files & the docker directory.

For more commands, run phpdock help.

Example For a Laravel Project

Laravel env file using the phpdock default configuration:

# Project ENVDB_CONNECTION=mysqlDB_HOST=mysqlDB_PORT=3306DB_DATABASE=phpdockDB_USERNAME=phpdockDB_PASSWORD=secretREDIS_HOST=redisCACHE_DRIVER=redisSESSION_DRIVER=redisQUEUE_DRIVER=redisMAIL_HOST=mailMAIL_PORT=1025

Config for Mysql:

app:
build:
context: ./docker/appdockerfile: Dockerfileargs:
- MY_PHP_VERSION=${PHP_VERSION}volumes:
- php-sock:/socket
- ./:/var/www/htmlnetworks:
- phpdockdepends_on:
mysql:
condition: service_healthy
mysql:
build:
context: ./docker/mysqldockerfile: Dockerfileargs:
- MY_MYSQL_VERSION=${MYSQL_VERSION}ports:
- ${DB_PORT:-3306}:3306volumes:
- dbdata:/var/lib/mysqlenvironment:
MYSQL_ROOT_PASSWORD: "${DB_PASS:-secret}"MYSQL_DATABASE: "${DB_NAME:-phpdock}"MYSQL_USER: "${DB_USER:-phpdock}"MYSQL_PASSWORD: "${DB_PASS:-secret}"MYSQL_ALLOW_EMPTY_PASSWORD: "yes"networks:
- phpdockhealthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]timeout: 45sinterval: 10sretries: 5

Database Manager

Connect to DB Management software like TablePlus, like this:
table plus config

phpDock Base Image Extensions Included:

[PHP Modules]
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
maxminddb
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Install Custom PHP Extensions:

phpDock uses https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions to install extensions.

This package detects your PHP version and installs the correct version. Simply add additional extensions or modifications to the docker/app/Dockerfile, like this:

RUN install-php-extensions \
csv \
grpc \
protobuf

Hat Tips :shipit:

About

Simple PHP dev environment, for Laravel or other PHP based projects.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

phpDock

Docker Compose environment, based on Alpine Linux.

Made to be a very fast & simple macOS php development environment.
Spin up a new environment in <= 10 seconds (after you have the base images downloaded)

Including:
php-fpm, MySql,, Singlestore, Redis, Nginx, Mailhog, Composer, node, npm & yarn

Deafults to Singlestore DB.

Local Addresses

Docker Config

Docker environment can be configured in .env.phpdock.
Easily swap out images and configure docker separate from your application .env.

Use any of these in .env.phpdock, to customize your environment:

  • PHP-fpm: 8.3-latest
  • MySql Server: any valid mysql tag between 5.7 - 8.x
  • singlestore: always latest version
  • redis: always latest version

To customize more, you can always edit the docker-compose,yml.

Install

composer require madsem/phpdock --dev

Then run vendor/bin/phpdock publish, to publish the docker/ folder and phpdock files into your project directory.

Then you can start using the executable shell script like so:

vendor/bin/phpdock <command>

Create an Alias

# bashalias phpdock="./vendor/bin/phpdock"# fishalias phpdock "./vendor/bin/phpdock"

Start a new Project

phpdock build

This will build the containers for your project.

After the containers are ready, run phpdock up to start the containers.

Then you can log into the app, nginx, mysql or redis services as follows:

phpdock ssh <service name>

To shut down but not destroy your work, run phpdock down,
or to destroy the containers, images and associated volumes phpdock destroy.

To rebuild containers after config changes, run phpdock rebuild:

# rebuild everything
phpdock rebuild
phpdock rebuild all
# rebuild only a particular service
phpdock rebuild app
phpdock rebuild web

Update phpDock

composer require madsem/phpdock --dev
phpdock update

This will publish the new phpdock files, and append .bak to old files & the docker directory.

For more commands, run phpdock help.

Example For a Laravel Project

Laravel env file using the phpdock default configuration:

# Project ENVDB_CONNECTION=mysqlDB_HOST=mysqlDB_PORT=3306DB_DATABASE=phpdockDB_USERNAME=phpdockDB_PASSWORD=secretREDIS_HOST=redisCACHE_DRIVER=redisSESSION_DRIVER=redisQUEUE_DRIVER=redisMAIL_HOST=mailMAIL_PORT=1025

Config for Mysql:

app:
build:
context: ./docker/appdockerfile: Dockerfileargs:
- MY_PHP_VERSION=${PHP_VERSION}volumes:
- php-sock:/socket
- ./:/var/www/htmlnetworks:
- phpdockdepends_on:
mysql:
condition: service_healthy
mysql:
build:
context: ./docker/mysqldockerfile: Dockerfileargs:
- MY_MYSQL_VERSION=${MYSQL_VERSION}ports:
- ${DB_PORT:-3306}:3306volumes:
- dbdata:/var/lib/mysqlenvironment:
MYSQL_ROOT_PASSWORD: "${DB_PASS:-secret}"MYSQL_DATABASE: "${DB_NAME:-phpdock}"MYSQL_USER: "${DB_USER:-phpdock}"MYSQL_PASSWORD: "${DB_PASS:-secret}"MYSQL_ALLOW_EMPTY_PASSWORD: "yes"networks:
- phpdockhealthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]timeout: 45sinterval: 10sretries: 5

Database Manager

Connect to DB Management software like TablePlus, like this:
table plus config

phpDock Base Image Extensions Included:

[PHP Modules]
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
maxminddb
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Install Custom PHP Extensions:

phpDock uses https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions to install extensions.

This package detects your PHP version and installs the correct version. Simply add additional extensions or modifications to the docker/app/Dockerfile, like this:

RUN install-php-extensions \
csv \
grpc \
protobuf

Hat Tips :shipit:

About

Simple PHP dev environment, for Laravel or other PHP based projects.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

phpDock

Docker Compose environment, based on Alpine Linux.

Made to be a very fast & simple macOS php development environment.
Spin up a new environment in <= 10 seconds (after you have the base images downloaded)

Including:
php-fpm, MySql,, Singlestore, Redis, Nginx, Mailhog, Composer, node, npm & yarn

Deafults to Singlestore DB.

Local Addresses

Docker Config

Docker environment can be configured in .env.phpdock.
Easily swap out images and configure docker separate from your application .env.

Use any of these in .env.phpdock, to customize your environment:

  • PHP-fpm: 8.3-latest
  • MySql Server: any valid mysql tag between 5.7 - 8.x
  • singlestore: always latest version
  • redis: always latest version

To customize more, you can always edit the docker-compose,yml.

Install

composer require madsem/phpdock --dev

Then run vendor/bin/phpdock publish, to publish the docker/ folder and phpdock files into your project directory.

Then you can start using the executable shell script like so:

vendor/bin/phpdock <command>

Create an Alias

# bashalias phpdock="./vendor/bin/phpdock"# fishalias phpdock "./vendor/bin/phpdock"

Start a new Project

phpdock build

This will build the containers for your project.

After the containers are ready, run phpdock up to start the containers.

Then you can log into the app, nginx, mysql or redis services as follows:

phpdock ssh <service name>

To shut down but not destroy your work, run phpdock down,
or to destroy the containers, images and associated volumes phpdock destroy.

To rebuild containers after config changes, run phpdock rebuild:

# rebuild everything
phpdock rebuild
phpdock rebuild all
# rebuild only a particular service
phpdock rebuild app
phpdock rebuild web

Update phpDock

composer require madsem/phpdock --dev
phpdock update

This will publish the new phpdock files, and append .bak to old files & the docker directory.

For more commands, run phpdock help.

Example For a Laravel Project

Laravel env file using the phpdock default configuration:

# Project ENVDB_CONNECTION=mysqlDB_HOST=mysqlDB_PORT=3306DB_DATABASE=phpdockDB_USERNAME=phpdockDB_PASSWORD=secretREDIS_HOST=redisCACHE_DRIVER=redisSESSION_DRIVER=redisQUEUE_DRIVER=redisMAIL_HOST=mailMAIL_PORT=1025

Config for Mysql:

app:
build:
context: ./docker/appdockerfile: Dockerfileargs:
- MY_PHP_VERSION=${PHP_VERSION}volumes:
- php-sock:/socket
- ./:/var/www/htmlnetworks:
- phpdockdepends_on:
mysql:
condition: service_healthy
mysql:
build:
context: ./docker/mysqldockerfile: Dockerfileargs:
- MY_MYSQL_VERSION=${MYSQL_VERSION}ports:
- ${DB_PORT:-3306}:3306volumes:
- dbdata:/var/lib/mysqlenvironment:
MYSQL_ROOT_PASSWORD: "${DB_PASS:-secret}"MYSQL_DATABASE: "${DB_NAME:-phpdock}"MYSQL_USER: "${DB_USER:-phpdock}"MYSQL_PASSWORD: "${DB_PASS:-secret}"MYSQL_ALLOW_EMPTY_PASSWORD: "yes"networks:
- phpdockhealthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]timeout: 45sinterval: 10sretries: 5

Database Manager

Connect to DB Management software like TablePlus, like this:
table plus config

phpDock Base Image Extensions Included:

[PHP Modules]
bcmath
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
maxminddb
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

Install Custom PHP Extensions:

phpDock uses https://github.com/mlocati/docker-php-extension-installer#supported-php-extensions to install extensions.

This package detects your PHP version and installs the correct version. Simply add additional extensions or modifications to the docker/app/Dockerfile, like this:

RUN install-php-extensions \
csv \
grpc \
protobuf

Hat Tips :shipit:

About

Simple PHP dev environment, for Laravel or other PHP based projects.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages