Codeigniter 4 and Docker |
Hi everyone.
Just finished to try Codeigniter 4 in a Docker container, and I have to say I'm really surprised there's no mention of such technology in the documentation. I have some points and I'd like to hear your opinion 1) Composer install DOESN'T work out of the box. I find it really surprising because that tool is intended to simplify tasks, not to spend time troubleshooting. 2)Why encoraging people to develop on php local server (spark) installing dependencies and making system "dirty"? 3)What was so wrong with Manual Install? With manual install I was able to get at least the welcome message. Controllers subfolders separation didn't work, and that's a major issue IMO. I suggest we all start to seriously consider Docker enviroment as a primary alternative, cause it's safe and also realiable for local dev. Not to mention that, once finished, u can create your own images to send in a CI/CD context. Hope you all get the "constructive" side of my post and would like to give me a feedback, or maybe start to have ideas to implement such great tech as Docker.
[Image: https://vulndetect.org/assets/uploads/fi...docker.ico]
Andy Biancoblu Quote:Once you have eliminated the impossible, whatever remains, however improbable, must be the truth.
Manual install is still an option (https://codeigniter4.github.io/userguide...anual.html).
Composer install of the appstarter works out of the box, as far as we know. Which composer install are you referring to? RUnning the local (spark) server is an *option* for those who don't want to configure their server. "Docker" is coming, this quarter
Controllers and sub folders separation doe's work as long as you namespace them right.
What did you Try? What did you Get? What did you Expect?
Joined CodeIgniter Community 2009. ( Skype: insitfx )
If you wish, you can use this basic example to create your container (tested on Ubuntu 18.04 - Docker version 19.03.5, build 633a0ea838):
1) create this structure codeigniter / - conf / apache.conf - Dockerfile apache.conf Code: <VirtualHost *:80> Dockerfile Code: FROM php:7.2.26-apache 2) Go to the codeigniter folder cd codeigniter 3) build the image Code: docker build . -t codeginiter:4.0.0-rc.3 4) start the container Code: docker container run --publish 80:80 --name ci4 codeginiter:4.0.0-rc.3 At this point you should see the page on the browser ... Codeigniter 4 - Docker Image [github] [docker hub]
(01-02-2020, 09:03 AM)MGatner Wrote: @atsanna This is great! Would you be willing to share this with a larger audience? @MGatner I have not invented anything: anyone who wishes can use it as he sees fit: it can be copied, modified, shared, published, sold, etc ... without any restrictions. Codeigniter 4 - Docker Image [github] [docker hub]
Hi, I received a message that pointed out that my Dockerfile was not properly mounting the folder on the host.
I have improved the docker file and want to share the changes with you. You can find the update on github at this address https://github.com/atsanna/codeigniter4-docker With this new version you should be able to mount the folder on the host. I also published the repository on dockerhub https://hub.docker.com/r/atsanna/codeigniter4 In this case you can start the container with the following command: Code: docker container run --publish 80:80 --name ci4 -v /localfolder:/var/www/html atsanna/codeigniter4:latest Codeigniter 4 - Docker Image [github] [docker hub]
Thank you! I really appreciate your knowledge and want to share. In the docker image I am unable to connect to a mysql database. (I can with the same files and settings on the host) ...
--------------------------------- Gracias! Aprecio mucho tu conocimiento y ganas de compartir. En la imagen de docker no logro conectarme a una base de datos mysql. (puedo con los mismos archivos y configuracion en el host)... --------------------------------- SYSTEMPATH/Database/MySQLi/Connection.php at line 110 103 { 104 $hostname = ($persistent === true) ? 'p:' . $this->hostname : $this->hostname; 105 $port = empty($this->port) ? null : $this->port; 106 $socket = null; 107 } 108 109 $client_flags = ($this->compress === true) ? MYSQLI_CLIENT_COMPRESS : 0; 110 $this->mysqli = mysqli_init(); 111 112 mysqli_report(MYSQLI_REPORT_ALL & ~MYSQLI_REPORT_INDEX); 113 114 $this->mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 10); 115 116 if (isset($this->strictOn)) 117 { |
Welcome Guest, Not a member yet? Register Sign In |