php-psr VS Docker Compose

Compare php-psr vs Docker Compose and see what are their differences.


PHP extension providing the accepted PSR interfaces (by jbboehr)

Docker Compose

Define and run multi-container applications with Docker (by docker)
Our great sponsors
  • Scout APM - Less time debugging, more time building
  • SonarLint - Clean code begins in your IDE with SonarLint
  • - Download’s Tech Salary Report
php-psr Docker Compose
1 268
219 27,275
- 2.1%
3.0 9.6
10 months ago 3 days ago
C Go
GNU General Public License v3.0 or later Apache License 2.0
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.


Posts with mentions or reviews of php-psr. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2021-08-20.

Docker Compose

Posts with mentions or reviews of Docker Compose. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-09-24.
  • First time gaming server
    2 projects | | 24 Sep 2022
    The Arch Linux Install Guide is what I'd recommend to get started with, and it can be found here. Note that Arch is "rolling release" and some people find this a bad idea for servers - I find it helpful, personally, but to be fair I'm pointing it out. You can go with Manjaro instead if you want the benefits of Arch but some helpful stuff already included for GUI. After that, you can look into Docker Compose, documentation found here.
  • Multi Cloud Networking
    2 projects | | 22 Sep 2022
    #!/bin/bash # -- Prerequists # yum install -y wireguard-tools net-tools jq # modprobe ip_tables # echo 'ip_tables' >> /etc/modules # -- Install Docker Compose # curl -L --fail -o /usr/sbin/docker-compose # chmod +x /usr/sbin/docker-compose # -- Setting env variables NETMAKER_BASE_DOMAIN=$DOMAIN_NAME COREDNS_IP=$(ip route get 1 | sed -n 's/^.*src \([0-9.]*\) .*$/\1/p') SERVER_PUBLIC_IP=$(curl -s MASTER_KEY=$(tr -dc A-Za-z0-9 head -c 30 ; echo '') EMAIL="[email protected]" MESH_SETUP="true" VPN_SETUP="false" NUM_CLIENTS=5 echo " ----------------------------" echo " SETUP ARGUMENTS" echo " ----------------------------" echo " domain: $NETMAKER_BASE_DOMAIN" echo " email: $EMAIL" echo " coredns ip: $COREDNS_IP" echo " public ip: $SERVER_PUBLIC_IP" echo " master key: $MASTER_KEY" echo " setup mesh?: $MESH_SETUP" echo " setup vpn?: $VPN_SETUP" if [ "${VPN_SETUP}" == "true" ]; then echo " # clients: $NUM_CLIENTS" fi echo " ----------------------------" sleep 5 # -- Installation echo "setting mosquitto.conf..." wget -q -O /root/mosquitto.conf echo "setting docker-compose..." mkdir -p /root/dnsconfig cp /home/opc/setup/netmaker/Corefile /root/dnsconfig/ mkdir -p /root/traefik_certs mkdir -p /root/shared_certs mkdir -p /root/sqldata mkdir -p /root/mosquitto_data mkdir -p /root/mosquitto_logs cp /home/opc/setup/netmaker/docker-compose.yml /root/docker-compose.yml sed -i "s/SERVER_PUBLIC_IP/$SERVER_PUBLIC_IP/g" /root/docker-compose.yml sed -i "s/COREDNS_IP/$COREDNS_IP/g" /root/docker-compose.yml sed -i "s/REPLACE_MASTER_KEY/$MASTER_KEY/g" /root/docker-compose.yml sed -i "s/YOUR_EMAIL/$EMAIL/g" /root/docker-compose.yml echo "starting containers..." docker-compose -f /root/docker-compose.yml up -d test_connection() { echo "testing Traefik setup (please be patient, this may take 1-2 minutes)" for i in 1 2 3 4 5 6 do curlresponse=$(curl -vIs https://api-base-domain.extenssion 2>&1) if [[ "$i" == 6 ]]; then echo " Traefik is having an issue setting up certificates, please investigate (docker logs traefik)" echo " exiting..." exit 1 elif [[ "$curlresponse" == *"failed to verify the legitimacy of the server"* ]]; then echo " certificates not yet configured, retrying..." elif [[ "$curlresponse" == *"left intact"* ]]; then echo " certificates ok" break else secs=$(($i*5+10)) echo " issue establishing connection...retrying in $secs seconds..." fi sleep $secs done } set +e test_connection cat << "EOF" __ __ ______ ______ __ __ ______ __ __ ______ ______ /\ "-.\ \ /\ ___\ /\__ _\ /\ "-./ \ /\ __ \ /\ \/ / /\ ___\ /\ == \ \ \ \-. \ \ \ __\ \/_/\ \/ \ \ \-./\ \ \ \ __ \ \ \ _"-. \ \ __\ \ \ __< \ \_\\"\_\ \ \_____\ \ \_\ \ \_\ \ \_\ \ \_\ \_\ \ \_\ \_\ \ \_____\ \ \_\ \_\ \/_/ \/_/ \/_____/ \/_/ \/_/ \/_/ \/_/\/_/ \/_/\/_/ \/_____/ \/_/ /_/ EOF echo "visit https://dashboard-base-domain.extenssion to log in" sleep 7 setup_mesh() {( set -e echo "creating netmaker network (" curl -s -o /dev/null -d '{"addressrange":"","netid":"netmaker"}' -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/networks sleep 5 echo "creating netmaker access key" curlresponse=$(curl -s -d '{"uses":99999,"name":"netmaker-key"}' -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/networks/netmaker/keys) ACCESS_TOKEN=$(jq -r '.accessstring' <<< ${curlresponse}) sleep 5 echo "configuring netmaker server as ingress gateway" curlresponse=$(curl -s -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/nodes/netmaker) SERVER_ID=$(jq -r '.[0].id' <<< ${curlresponse}) curl -o /dev/null -s -X POST -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/nodes/netmaker/$SERVER_ID/createingress sleep 5 echo "finished configuring server and network. You can now add clients." echo "" echo "For Linux, Mac, Windows, and FreeBSD:" echo " 1. Install the netclient:" echo " 2. Join the network: netclient join -t $ACCESS_TOKEN" echo "" echo "For Android and iOS clients, perform the following steps:" echo " 1. Log into UI at dashboard-base-domain.extenssion" echo " 2. Navigate to \"EXTERNAL CLIENTS\" tab" echo " 3. Select the gateway and create clients" echo " 4. Scan the QR Code from WireGuard app in iOS or Android" echo "" echo "Netmaker setup is now complete. You are ready to begin using Netmaker." )} setup_vpn() {( set -e echo "creating vpn network (" curl -s -o /dev/null -d '{"addressrange":"","netid":"vpn","defaultextclientdns":""}' -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/networks sleep 5 echo "configuring netmaker server as vpn inlet..." curlresponse=$(curl -s -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/nodes/vpn) SERVER_ID=$(jq -r '.[0].id' <<< ${curlresponse}) curl -s -o /dev/null -X POST -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/nodes/vpn/$SERVER_ID/createingress echo "waiting 5 seconds for server to apply configuration..." sleep 5 echo "configuring netmaker server vpn gateway..." [ -z "$GATEWAY_IFACE" ] && GATEWAY_IFACE=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)') echo "gateway iface: $GATEWAY_IFACE" curlresponse=$(curl -s -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/nodes/vpn) SERVER_ID=$(jq -r '.[0].id' <<< ${curlresponse}) EGRESS_JSON=$( jq -n \ --arg gw "$GATEWAY_IFACE" \ '{ranges: [""], interface: $gw}' ) echo "egress json: $EGRESS_JSON" curl -s -o /dev/null -X POST -d "$EGRESS_JSON" -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/nodes/vpn/$SERVER_ID/creategateway sleep 3 echo "creating client configs..." for ((a=1; a <= $NUM_CLIENTS; a++)) do CLIENT_JSON=$( jq -n \ --arg clientid "vpnclient-$a" \ '{clientid: $clientid}' ) curl -s -o /dev/null -d "$CLIENT_JSON" -H "Authorization: Bearer $MASTER_KEY" -H 'Content-Type: application/json' https://api-base-domain.extenssion/api/extclients/vpn/$SERVER_ID sleep 2 done echo "finished configuring vpn server." echo "" echo "To configure clients, perform the following steps:" echo " 1. log into dashboard-base-domain.extenssion" echo " 2. Navigate to \"EXTERNAL CLIENTS\" tab" echo " 3. Download or scan a client config (vpnclient-x) to the appropriate device" echo " 4. Follow the steps for your system to configure WireGuard on the appropriate device" echo " 5. Create and delete clients as necessary. Changes to netmaker server settings require regenerating ext clients." )} if [ "${MESH_SETUP}" != "false" ]; then setup_mesh fi if [ "${VPN_SETUP}" == "true" ]; then setup_vpn fi echo "" echo "Netmaker setup is now complete. You are ready to begin using Netmaker."
  • From Data Preprocessing to Using Graph Database
    4 projects | | 19 Sep 2022
    Download a TAR file of Docker Compose:
  • Easiest solution for local deployment?
    5 projects | | 18 Sep 2022
    We use the docker compose addon to deploy containers (installation instructions - note that it comes bundled with Docker Desktop). On the desktop we use docker context's to allow deployment and management on remote machines, and a DOCKER_HOST environment variable to do so from our CI/CD pipeline (GitHub Actions). There is a nice article on the options here:
  • Dockerize a Django, React, and Postgres application with docker and docker-compose | by Anjal Bam
    6 projects | | 10 Sep 2022
    Containerizing an application is the packaging of the software with its own OS, libraries, and dependencies required to run the software code and create a single lightweight executable - which is called a container. It runs consistently on any infrastructure. We will be using Docker and docker-compose to package our application.
  • Installing Docker and a media stack (Plex, *arrs, download clients, elaborate script) [Text]
    13 projects | | 6 Sep 2022
    docker-compose (configuring and starting Docker containers) and
  • Do I need Kubernetes?
    2 projects | | 3 Sep 2022
    docker compose is a great way to manage via a single config file
  • Kubernetes Was Never Designed for Batch Jobs
    5 projects | | 1 Sep 2022
    In fact in Docker, “Compose” means combining services:
  • Why Does Everything Say Docker Compose is Deprecated / Dead?
    5 projects | | 31 Aug 2022
    Did you check the project repository first?
  • Do you use Preview Environments?
    3 projects | | 30 Aug 2022
    To actually answer the question: We use Shipyard to manage our envs, and because we are active users of Docker Compose it was literally just adding our GH repositories and voila. But again we are obviously biased here!

What are some alternatives?

When comparing php-psr and Docker Compose you can also consider the following projects:

supervisor - Supervisor process control system for UNIX

terraform - Terraform enables you to safely and predictably create, change, and improve infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

LibreNMS-docker - LibreNMS Docker image based on Alpine Linux and Nginx

Portainer - Making Docker and Kubernetes management easy.

Cloud-Init - unofficial mirror of Ubuntu's cloud-init

portainer-templates - Various Portainer App Templates

docker-cloudflared - Cloudflared proxy-dns Docker image

k3s - Lightweight Kubernetes

acme-companion - Automated ACME SSL certificate generation for nginx-proxy

Nomad - Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.

Dokku - A docker-powered PaaS that helps you build and manage the lifecycle of applications

docker-transmission-openvpn - Docker container running Transmission torrent client with WebUI over an OpenVPN tunnel