Change DDEV Port Issue

User
Starting syt…
Container ddev-ssh-agent Recreate
Container ddev-ssh-agent Recreated
Container ddev-ssh-agent Started
ssh-agent container is running: If you want to add authentication to the ssh-agent container, run 'ddev auth ssh' to enable your keys.
Building project images……
Project images built in 4s.
Container ddev-syt-adminer Stopped
Container ddev-syt-db Recreate
Container ddev-syt-db Recreated
Container ddev-syt-adminer Created
Container ddev-syt-web Recreate
Container ddev-syt-web Recreated
Container ddev-syt-db Started
Container ddev-syt-adminer Started
Container ddev-syt-web Started
Waiting for containers to become ready: [web db]
Starting ddev-router if necessary…
Failed to start syt: unable to listen on required ports, port 5173 is already in use,
Troubleshooting suggestions at https://ddev.readthedocs.io/en/stable/users/usage/troubleshooting/#unable-listen
change port 5173 to 5189
Assistant
The error indicates that port **5173** is already in use, likely by another application or an existing DDEV project. To resolve this, you can change the **Vite development server** port in your **DDEV configuration** to **5189**.

### **Solution: Change the Vite Port in DDEV**
1. Open your **DDEV config file**:

ddev config

2. When prompted for the **webserver port**, specify **5189** instead of **5173**.

3. Alternatively, you can manually edit the `.ddev/config.yaml` file:
– Open `.ddev/config.yaml`
– Add or update the `host_webserver_port` under `web_environment`:

web_environment:
       - VITE_PORT=5189

4. Restart DDEV:

ddev restart

### **Alternative: Identify and Kill Process Using Port 5173**
If you want to check what’s running on port **5173** and free it up:
– **Windows (PowerShell):**

netstat -ano | findstr :5173

– Look for the **PID** (Process ID).
– Kill the process using:

taskkill /PID <PID> /F

– **Linux/macOS:**

lsof -i :5173

– Kill the process:

kill -9 <PID>

Then, restart DDEV:

ddev restart

Let me know if you need more help! 🚀

User
name: syt
type: laravel
docroot: public
php_version: "8.3"
webserver_type: nginx-fpm
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
database:
type: mariadb
version: "10.11"
use_dns_when_possible: true
composer_version: "2"
web_environment: []
corepack_enable: false
web_extra_exposed_ports:
– name: vite
container_port: 5173
http_port: 5172
https_port: 5173
– name: reverb
container_port: 6001
http_port: 6002
https_port: 6001

# Key features of DDEV's config.yaml:

# name: # Name of the project, automatically provides
# http://projectname.ddev.site and https://projectname.ddev.site

# type: # backdrop, cakephp, craftcms, drupal, drupal6, drupal7, drupal8, drupal9, drupal10, drupal11, laravel, magento, magento2, php, shopware6, silverstripe, symfony, typo3, wordpress
# See https://ddev.readthedocs.io/en/stable/users/quickstart/ for more
# information on the different project types

# docroot: # Relative path to the directory containing index.php.

# php_version: "8.3" # PHP version to use, "5.6" through "8.4"

# You can explicitly specify the webimage but this
# is not recommended, as the images are often closely tied to DDEV's' behavior,
# so this can break upgrades.

# webimage: # nginx/php docker image.

# database:
# type: # mysql, mariadb, postgres
# version: # database version, like "10.11" or "8.0"
# MariaDB versions can be 5.5-10.8, 10.11, and 11.4.
# MySQL versions can be 5.5-8.0.
# PostgreSQL versions can be 9-17.

# router_http_port: # Port to be used for http (defaults to global configuration, usually 80)
# router_https_port: # Port for https (defaults to global configuration, usually 443)

# xdebug_enabled: false # Set to true to enable Xdebug and "ddev start" or "ddev restart"
# Note that for most people the commands
# "ddev xdebug" to enable Xdebug and "ddev xdebug off" to disable it work better,
# as leaving Xdebug enabled all the time is a big performance hit.

# xhprof_enabled: false # Set to true to enable Xhprof and "ddev start" or "ddev restart"
# Note that for most people the commands
# "ddev xhprof" to enable Xhprof and "ddev xhprof off" to disable it work better,
# as leaving Xhprof enabled all the time is a big performance hit.

# webserver_type: nginx-fpm or apache-fpm

# timezone: Europe/Berlin
# If timezone is unset, DDEV will attempt to derive it from the host system timezone
# using the $TZ environment variable or the /etc/localtime symlink.
# This is the timezone used in the containers and by PHP;
# it can be set to any valid timezone,
# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# For example Europe/Dublin or MST7MDT

# composer_root:
# Relative path to the Composer root directory from the project root. This is
# the directory which contains the composer.json and where all Composer related
# commands are executed.

# composer_version: "2"
# You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1
# to use the latest major version available at the time your container is built.
# It is also possible to use each other Composer version channel. This includes:
# – 2.2 (latest Composer LTS version)
# – stable
# – preview
# – snapshot
# Alternatively, an explicit Composer version may be specified, for example "2.2.18".
# To reinstall Composer after the image was built, run "ddev debug rebuild".

# nodejs_version: "22"
# change from the default system Node.js version to any other version.
# See https://ddev.readthedocs.io/en/stable/users/configuration/config/#nodejs_version for more information
# and https://www.npmjs.com/package/n#specifying-nodejs-versions for the full documentation,
# Note that using of 'ddev nvm' is discouraged because "nodejs_version" is much easier to use,
# can specify any version, and is more robust than using 'nvm'.

# corepack_enable: false
# Change to 'true' to 'corepack enable' and gain access to latest versions of yarn/pnpm

# additional_hostnames:
# – somename
# – someothername
# would provide http and https URLs for "somename.ddev.site"
# and "someothername.ddev.site".

# additional_fqdns:
# – example.com
# – sub1.example.com
# would provide http and https URLs for "example.com" and "sub1.example.com"
# Please take care with this because it can cause great confusion.

# upload_dirs: "custom/upload/dir"
#
# upload_dirs:
# – custom/upload/dir
# – ../private
#
# would set the destination paths for ddev import-files to /custom/upload/dir
# When Mutagen is enabled this path is bind-mounted so that all the files
# in the upload_dirs don't have to be synced into Mutagen.

# disable_upload_dirs_warning: false
# If true, turns off the normal warning that says
# "You have Mutagen enabled and your 'php' project type doesn't have upload_dirs set"

# ddev_version_constraint: ""
# Example:
# ddev_version_constraint: ">= 1.22.4"
# This will enforce that the running ddev version is within this constraint.
# See https://github.com/Masterminds/semver#checking-version-constraints for
# supported constraint formats

# working_dir:
# web: /var/www/html
# db: /home
# would set the default working directory for the web and db services.
# These values specify the destination directory for ddev ssh and the
# directory in which commands passed into ddev exec are run.

# omit_containers: [db, ddev-ssh-agent]
# Currently only these containers are supported. Some containers can also be
# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit
# the "db" container, several standard features of DDEV that access the
# database container will be unusable. In the global configuration it is also
# possible to omit ddev-router, but not here.

# performance_mode: "global"
# DDEV offers performance optimization strategies to improve the filesystem
# performance depending on your host system. Should be configured globally.
#
# If set, will override the global config. Possible values are:
# – "global": uses the value from the global config.
# – "none": disables performance optimization for this project.
# – "mutagen": enables Mutagen for this project.
# – "nfs": enables NFS for this project.
#
# See https://ddev.readthedocs.io/en/stable/users/install/performance/#nfs
# See https://ddev.readthedocs.io/en/stable/users/install/performance/#mutagen

# fail_on_hook_fail: False
# Decide whether 'ddev start' should be interrupted by a failing hook

# host_https_port: "59002"
# The host port binding for https can be explicitly specified. It is
# dynamic unless otherwise specified.
# This is not used by most people, most people use the *router* instead
# of the localhost port.

# host_webserver_port: "59001"
# The host port binding for the ddev-webserver can be explicitly specified. It is
# dynamic unless otherwise specified.
# This is not used by most people, most people use the *router* instead
# of the localhost port.

# host_db_port: "59002"
# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic
# unless explicitly specified.

# mailpit_http_port: "8025"
# mailpit_https_port: "8026"
# The Mailpit ports can be changed from the default 8025 and 8026

# host_mailpit_port: "8025"
# The mailpit port is not normally bound on the host at all, instead being routed
# through ddev-router, but it can be bound directly to localhost if specified here.

# webimage_extra_packages: [php7.4-tidy, php-bcmath]
# Extra Debian packages that are needed in the webimage can be added here

# dbimage_extra_packages: [telnet,netcat]
# Extra Debian packages that are needed in the dbimage can be added here

# use_dns_when_possible: true
# If the host has internet access and the domain configured can
# successfully be looked up, DNS will be used for hostname resolution
# instead of editing /etc/hosts
# Defaults to true

# project_tld: ddev.site
# The top-level domain used for project URLs
# The default "ddev.site" allows DNS lookup via a wildcard
# If you prefer you can change this to "ddev.local" to preserve
# pre-v1.9 behavior.

# ngrok_args: –basic-auth username:pass1234
# Provide extra flags to the "ngrok http" command, see
# https://ngrok.com/docs/ngrok-agent/config or run "ngrok http -h"

# disable_settings_management: false
# If true, DDEV will not create CMS-specific settings files like
# Drupal's settings.php/settings.ddev.php or TYPO3's additional.php
# In this case the user must provide all such settings.

# You can inject environment variables into the web container with:
# web_environment:
# – SOMEENV=somevalue
# – SOMEOTHERENV=someothervalue

# no_project_mount: false
# (Experimental) If true, DDEV will not mount the project into the web container;
# the user is responsible for mounting it manually or via a script.
# This is to enable experimentation with alternate file mounting strategies.
# For advanced users only!

# bind_all_interfaces: false
# If true, host ports will be bound on all network interfaces,
# not the localhost interface only. This means that ports
# will be available on the local network if the host firewall
# allows it.

# default_container_timeout: 120
# The default time that DDEV waits for all containers to become ready can be increased from
# the default 120. This helps in importing huge databases, for example.

#web_extra_exposed_ports:
#- name: nodejs
# container_port: 3000
# http_port: 2999
# https_port: 3000
#- name: something
# container_port: 4000
# https_port: 4000
# http_port: 3999
# Allows a set of extra ports to be exposed via ddev-router
# Fill in all three fields even if you don’t intend to use the https_port!
# If you don’t add https_port, then it defaults to 0 and ddev-router will fail to start.
#
# The port behavior on the ddev-webserver must be arranged separately, for example
# using web_extra_daemons.
# For example, with a web app on port 3000 inside the container, this config would
# expose that web app on https://.ddev.site:9999 and http://.ddev.site:9998
# web_extra_exposed_ports:
# – name: myapp
# container_port: 3000
# http_port: 9998
# https_port: 9999

#web_extra_daemons:
#- name: "http-1"
# command: "/var/www/html/node_modules/.bin/http-server -p 3000"
# directory: /var/www/html
#- name: "http-2"
# command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000"
# directory: /var/www/html

# override_config: false
# By default, config.*.yaml files are *merged* into the configuration
# But this means that some things can't be overridden
# For example, if you have 'use_dns_when_possible: true'' you can't override it with a merge
# and you can't erase existing hooks or all environment variables.
# However, with "override_config: true" in a particular config.*.yaml file,
# 'use_dns_when_possible: false' can override the existing values, and
# hooks:
# post-start: []
# or
# web_environment: []
# or
# additional_hostnames: []
# can have their intended affect. 'override_config' affects only behavior of the
# config.*.yaml file it exists in.

# Many DDEV commands can be extended to run tasks before or after the
# DDEV command is executed, for example "post-start", "post-import-db",
# "pre-composer", "post-composer"
# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more
# information on the commands that can be extended and the tasks you can define
# for them. Example:
#hooks:
adjust in above

Assistant
Your `config.yaml` for DDEV looks well-structured for your Laravel project (`syt`). Here are some key highlights and suggestions:

### ✅ **Current Setup:**
1. **PHP 8.3** – You're using the latest PHP version.
2. **Nginx-FPM** – Optimal for Laravel performance.
3. **MariaDB 10.11** – Stable and recent database version.
4. **Xdebug Disabled** – Good for performance unless needed for debugging.
5. **Exposed Ports**:
– **Vite:** `5173` (HTTPS), `5172` (HTTP)
– **Reverb:** `6001` (HTTPS), `6002` (HTTP)

### 🔹 **Suggestions & Tweaks**
1. **Enable `xdebug_enabled: true` only when debugging is needed**

xdebug_enabled: false  # Change to true when debugging

Use `ddev xdebug on` only when needed to avoid performance issues.

2. **If using Node.js, specify the version**

nodejs_version: "22"

This ensures compatibility with your frontend dependencies.

3. **Consider `mutagen` for faster file sync (if using macOS)**

performance_mode: "mutagen"

This will speed up the filesystem for macOS.

4. **Check for Laravel Queue Support**
If you're using Laravel queues (e.g., Redis, SQS), ensure workers are configured correctly.

Would you like to add Redis, Mailpit (for emails), or any additional services to your setup? 🚀

User
change port 5173 to 5189
Assistant
Here’s your updated `config.yaml` with port 5173 changed to 5189:

name: syt
type: laravel
docroot: public
php_version: "8.3"
webserver_type: nginx-fpm
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
database:
    type: mariadb
    version: "10.11"
use_dns_when_possible: true
composer_version: "2"
web_environment: []
corepack_enable: false
web_extra_exposed_ports:
    - name: vite
      container_port: 5189
      http_port: 5188
      https_port: 5189
    - name: reverb
      container_port: 6001
      http_port: 6002
      https_port: 6001

Run the following command to apply the changes:

ddev restart

Let me know if you need further modifications! 🚀

Leave a Comment

Your email address will not be published. Required fields are marked *