Skip to main content

Docksal Setup

Thoughts on running CICodeIgniter with Docksal.

Initial setup is easy

# Setup CodeIgniter
composer create-project codeigniter4/appstarter myproject 
&& \ 
cd myproject

# Initialise a new Docksal project
# set DOCROOT to public
fin init

#dockroot# publicPlug the database settings into the project
echo "
database.default.hostname = getenv('MYSQL_HOST')
database.default.database = getenv('MYSQL_DB')
database.default.username = getenv('MYSQL_USER')
database.default.password = getenv('MYSQL_PASSWORD')
" >> .env

# Done
fin project start

Don't remember there being more to it. Now it's just fin project start 

Stack assumptions

fin init starts a lampLAMP stack. CodeIgniter project requires changing database settings in .env.
However it turns out this is managed by CI, so the settings in the file are picked up without having to make changes!

Missing spark add-on

Like Laravel's artisan, CodeIgniter has a helper utility called spark. There is no add-on, but it's easy to make.
Currently this means you type commands a bit more verbosely, for example fin exec php spark whatevs.

Run the spark dev server

I'm not sure if this is needed really (as discussed under Stack assumptions), however if you have a need (let me know), then the dev server can be exposed as follows:

Create .docksal/docksal-local.yml with the following contents:

version: "2.1"

services:
  cli:
    ports:
      - '8080:8080'

Apply using fin start. Run using fin exec php spark serve -host 0.0.0.0 then open https://myproject.docksal.site:8080.