//create the docker image: docker build -t lamp-codeigniter4 . docker build --no-cache -t lamp-codeigniter4 . //run the container only port 80 exposed. docker run -d -p 8080:80 --name lamp-codeigniter4-container lamp-codeigniter4 //run the container with port 80, 3306 exposed. docker run -d -p 8080:80 -p 3306:3306 --name lamp-codeigniter4-container lamp-codeigniter4 //run the shell on container: docker exec -it lamp-codeigniter4-container bash //install nano apt install nano //open mysql and execute the following mysql -u root -ppassword //create user and grant access to localhost CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'alrahma'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; //create user and grant access to "192.168.3.%" CREATE USER 'alrahma'@'192.168.3.%' IDENTIFIED BY '@alrahma2024'; GRANT ALL PRIVILEGES ON *.* TO 'alrahma'@'192.168.3.%' WITH GRANT OPTION; FLUSH PRIVILEGES; //exit mysql. //update the config to enable accepting requests from all IP's sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf //and add thefollowing line bind-address = 0.0.0.0 sudo service mysql restart //update these files database config, open each file nano /var/www/html/codeigniter4/app/Views/frontend/partials/navbar.php nano /var/www/html/codeigniter4/app/db_connection.php nano /var/www/codeigniter/app/Config/Database.php nano /var/www/codeigniter/app/Controllers/ParentController.php and look for those lines $host = 'localhost'; $dbname = 'school'; $username = 'root'; $password = ''; and update them as follow: // new Database configuration $host = '127.0.0.1'; $dbname = 'school'; $username = 'admin'; $password = 'password'; // Database configuration $host = '192.168.3.110'; $dbname = 'school'; $username = 'alrahma'; $password = '@alrahma2024';