Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/atsanna/codeigniter4-docker
🐳 PHP Docker Image for CodeIgniter4 development
https://github.com/atsanna/codeigniter4-docker
codeigniter4 docker docker-compose docker-image php
Last synced: 7 days ago
JSON representation
🐳 PHP Docker Image for CodeIgniter4 development
- Host: GitHub
- URL: https://github.com/atsanna/codeigniter4-docker
- Owner: atsanna
- License: mit
- Created: 2020-04-13T16:52:01.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-09-13T13:49:29.000Z (over 2 years ago)
- Last Synced: 2025-01-16T18:24:38.617Z (14 days ago)
- Topics: codeigniter4, docker, docker-compose, docker-image, php
- Language: Shell
- Homepage:
- Size: 26.9 MB
- Stars: 136
- Watchers: 11
- Forks: 93
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
## Docker Image for CodeIgniter4 development
[![Docker Build Status](https://img.shields.io/docker/cloud/build/atsanna/codeigniter4?style=for-the-badge)](https://hub.docker.com/r/atsanna/codeigniter4/)
[![Docker Stars](https://img.shields.io/docker/stars/atsanna/codeigniter4?style=for-the-badge)](https://hub.docker.com/r/atsanna/codeigniter4/)
[![Docker Image Version (tag latest semver)](https://img.shields.io/docker/v/atsanna/codeigniter4/latest?style=for-the-badge)](https://hub.docker.com/r/atsanna/codeigniter4/)
[![Docker Pulls](https://img.shields.io/docker/pulls/atsanna/codeigniter4?style=for-the-badge)](https://hub.docker.com/r/atsanna/codeigniter4/)
[![Docker Image Size](https://img.shields.io/docker/image-size/atsanna/codeigniter4?latest&style=for-the-badge)](https://hub.docker.com/r/atsanna/codeigniter4/)This repository provides you a development environment without requiring you to install PHP, a web server, and any other server software on your local machine. For this, it requires Docker and Docker Compose.
Basic example to create your container (tested on Ubuntu 20.04 - Docker version 20.10.11, build dea9396 - docker-compose version 1.25.0 ):
**NOTE: This package is under early development and is not ready for prime-time.**
**The old version is still available in the branch called "old"**
## Build Image
Clone thi repository and run:
```
./build.sh
```start the container with php 7.4:
```
docker container run -it --publish 80:80 --name ci4 -v /localfolder:/var/www/html codeigniter4.2.3:7.4.30-apache
```start the container with php 8.0:
```
docker container run -it --publish 80:80 --name ci4 -v /localfolder:/var/www/html codeigniter4.2.3:8.0.20-apache
```start the container with php 8.1:
```
docker container run -it --publish 80:80 --name ci4 -v /localfolder:/var/www/html codeigniter4.2.3:8.1.9-apache
```## Installation
1. Install [docker](https://docs.docker.com/engine/installation/) and [docker-compose](https://docs.docker.com/compose/install/) ;
2. Copy `docker-compose.yml` file to your project root path, and edit it according to your needs ;
3. Uncomment, in the `docker-compose.yml` file, the image you want to use it ;
4. From your project directory, start up your application by running:
```sh
docker-compose up -d
```4. From your project directory, stop your application by running:
```sh
docker-compose down --volumes
```# Environment variables summary:
## Environment file
### allowed values are: [`0`, `1`]
- `REGEN_ENV_FILE` - if 1, the `.env` file will be created and overwritten when the container starts## App Configuration
- `CI_ENVIRONMENT` - ENVIRONMENT [`production`, `develompent`, `tests`]
- `APP_BASE_URL` - URL to your CodeIgniter root. Typically this will be your base URL, WITH a trailing slash [`http://localhost/`]
- `APP_FORCE_GLOBAl_SECURE_REQUESTS` - If true, this will force every request made to this application to be made via a secure connection (HTTPS) [`true`, `false`]## App Session
- `APP_SESSION_DRIVER` - [`CodeIgniter\Session\Handlers\FileHandler`]
- `APP_SESSION_COOCKIE_NAME` - [`ci_session`]
- `APP_SESSION_EXPIRATION` - [`7200`]
- `APP_SESSION_SAVE_PATH` - [`null`]
- `APP_SESSION_MATCH_CHIP` - [`true`, `false`]
- `APP_SESSION_TIME_TO_UPDATE` - [`300`]
- `APP_SESSION_REGENERATE_DESTROY` - [`true`, `false`]
- `APP_CSP_ENABLED` - [`true`, `false`]## Default Database Configuration
- `DB_DEFAULT_HOSTNAME` - default hostname [`127.0.0.1`]
- `DB_DEFAULT_DATABASE` - default database name
- `DB_DEFAULT_USERNAME` - default database username
- `DB_DEFAULT_PASSWORD` - default database password
- `DB_DEFAULT_DRIVER` - default database driver [`MySQLi`, `SQLSRV`, `Postgre`, `OCI8`, `SQLite3`]
- `DB_DEFAULT_PORT` - default database port [`3306`, `1443`, `5432`, `1521`]
- `DB_DEFAULT_PREFIX` - default database prefix## Tests Database Configuration
- `DB_TESTS_HOSTNAME` - tests hostname [`127.0.0.1`]
- `DB_TESTS_DATABASE` - tests database name
- `DB_TESTS_USERNAME` - tests database username
- `DB_TESTS_PASSWORD` - tests database password
- `DB_TESTS_DRIVER` - tests database driver [`MySQLi`, `SQLSRV`, `Postgre`, `OCI8`, `SQLite3`]
- `DB_TESTS_PORT` - tests database port [`3306`, `1443`, `5432`, `1521`]
- `DB_TESTS_PREFIX` - tests database prefix- `DB_DEFAULT_PREFIX` - default database prefix
## Content Secure Policy Configuration
- `CONTENT_SECURE_POLICY_REPORT_ONLY` - Default CSP report context [`true`, `false`]
- `CONTENT_SECURE_POLICY_DEFAULT_SRC` - Will default to self if not overridden [`none`]
- `CONTENT_SECURE_POLICY_SCRIPT_SRC` - Lists allowed scripts' URLs [`self`]
- `CONTENT_SECURE_POLICY_STYLE_SRC` - Lists allowed stylesheets' URLs [`self`]
- `CONTENT_SECURE_POLICY_IMAGE_SRC` - Defines the origins from which images can be loaded [`self`]
- `CONTENT_SECURE_POLICY_BASE_URI` - Restricts the URLs that can appear in a page's `` element [`null`]
- `CONTENT_SECURE_POLICY_CHILD_SRC` - Lists the URLs for workers and embedded frame contents [`null`]
- `CONTENT_SECURE_POLICY_CONNECT_SRC` - Limits the origins that you can connect to (via XHR, WebSockets, and EventSource)[`self`]
- `CONTENT_SECURE_POLICY_FONT_SRC` - Specifies the origins that can serve web fonts [`null`]
- `CONTENT_SECURE_POLICY_FORM_ACTION` - Lists valid endpoints for submission from `` tags [`null`]
- `CONTENT_SECURE_POLICY_FRAME_ANCESTORS` - Specifies the sources that can embed the current page [`null`]
- `CONTENT_SECURE_POLICY_RFAME_SRC` - The frame-src directive restricts the URLs which may be loaded into nested browsing contexts [`null`]
- `CONTENT_SECURE_POLICY_MEDIA_SRC` - Restricts the origins allowed to deliver video and audio [`null`]
- `CONTENT_SECURE_POLICY_OBJECT_SRC` - Allows control over Flash and other plugins [`null`]
- `CONTENT_SECURE_POLICY_PLUGIN_TYPES` - Limits the kinds of plugins a page may invoke [`null`]
- `CONTENT_SECURE_POLICY_REPORT_URI` - Specifies a URL where a browser will send reports when a content security policy is violated [`null`]
- `CONTENT_SECURE_POLICY_SANDBOX` - List of actions allowed [`true`, `false`]
- `CONTENT_SECURE_POLICY_UPGRADE_INSECURE_REQUESTS` - Instructs user agents to rewrite URL schemes, changing HTTP to HTTPS. This directive is for websites with large numbers of old URLs that need to be rewritten[`true`, `false`]## Cookie Configuration
- `COOKIE_PREFIX` - Set a cookie name prefix if you need to avoid collisions [``]
- `COOKIE_EXPIRES` - Default expires timestamp for cookies [`0`]
- `COOKIE_PATH` - Typically will be a forward slash [`/`]
- `COOKIE_DOMAIN` - Set to `.your-domain.com` for site-wide cookies [``]
- `COOKIE_SECURE` - Cookie will only be set if a secure HTTPS connection exists [`true`, `false`]
- `COOKIE_HTTP_ONLY` - Cookie will only be accessible via HTTP(S) (no JavaScript) [`true`, `false`]
- `COOKIE_SAME_SITE` - Configure cookie SameSite setting [`None`, `Lax`, `Strict`, `''`]
- `COOKIE_RAW` - This flag allows setting a "raw" cookie [`true`, `false`]## Encryption Configuration
- `ENCRYPTION_KEY` - If you use the Encryption class you must set an encryption key (seed) [``]
- `ENCRYPTION_DRIVER` - One of the supported encryption drivers [`OpenSSL`, `Sodium`]
- `ENCRYPTION_BLOCK_SIZE` - This is the number of bytes that will be padded to the plaintext message before it is encrypted [`16`]
- `ENCRYPTION_DIGEST` - HMAC digest to use [`SHA256`, `SHA512`]## Honeypot Configuration
- `HONEYPOT_HIDDEN` - Makes Honeypot visible or not to human [`true`, `false`]
- `HONEYPOT_LABEL` - Honeypot Label Content [`Fill This Field`]
- `HONEYPOT_NAME` - Honeypot Field Name [`honeypot`]
- `HONEYPOT_TEMPLATE` - Honeypot HTML Template [`{label}`]
- `HONEYPOT_CONTAINER` - Honeypot container [`{template}`]## Security Configuration
- `SECURITY_CSRF_PROTECTION` - Protection Method for Cross Site Request Forgery protection [`cookie`, `session`]
- `SECURITY_TOKEN_RANDOMIZE` - Randomize the CSRF Token for added security [`true`, `false`]
- `SECURITY_TOKEN_NAME` - Token name for Cross Site Request Forgery protection [`csrf_token_name`]
- `SECURITY_HEADER_NAME` - Header name for Cross Site Request Forgery protection [`X-CSRF-TOKE`]
- `SECURITY_COOKIE_NAME` - Cookie name for Cross Site Request Forgery protection [`csrf_cookie_name`]
- `SECURITY_EXPIRES` - Expiration time for Cross Site Request Forgery protection cookie [`7200`]
- `SECURITY_REGENERATE` - Regenerate CSRF Token on every submission [`true`, `false`]
- `SECURITY_REDIRECT` - Redirect to previous page with error on failure [`true`, `false`]
- `SECURITY_SAME_SITE` - Setting for CSRF SameSite cookie token [`None`, `Lax`, `Strict`, `''`]## Logger Configuration
- `LOGGER_THRESHOLD` - You can enable error logging by setting a threshold over zero [`0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`]
- Threshold options are:
* 0 = Disables logging, Error logging TURNED OFF
* 1 = Emergency Messages - System is unusable
* 2 = Alert Messages - Action Must Be Taken Immediately
* 3 = Critical Messages - Application component unavailable, unexpected exception.
* 4 = Runtime Errors - Don't need immediate action, but should be monitored.
* 5 = Warnings - Exceptional occurrences that are not errors.
* 6 = Notices - Normal but significant events.
* 7 = Info - Interesting events, like user logging in, etc.
* 8 = Debug - Detailed debug information.
* 9 = All Messages## Curl Request Configuration
- `CURL_REQUEST_SHARE_OPTIONS` - Whether share options between requests or not [`true`, `false`]## Sendmail Configuration
- `ROOT_EMAIL` - The user that gets all mail for userids less than 1000. Ifblank, address rewriting is disabled.
- `MAIL_SERVER` - The host to send mail to, in the form host.
- `MAIL_SERVER_PORT` - The port to send mail to, in the form host.
- `MAIL_SERVER_USER` - The user name to use for SMTP AUTH.
- `MAIL_SERVER_PASSWORD` - The password to use for SMTP AUTH.
- `MAIL_SERVER_TLS` - Specifies whether ssmtp uses TLS to talk to the SMTP server.
- `MAIL_SERVER_STARTTLS` - Specifies whether ssmtp does a EHLO/STARTTLS before starting SSL negotiation.## List of Apache Modules pre-installed on these Docker images (apachectl -M)
- `core_module` (static)
- `so_module` (static)
- `watchdog_module` (static)
- `http_module` (static)
- `log_config_module` (static)
- `logio_module` (static)
- `version_module` (static)
- `unixd_module` (static)
- `access_compat_module` (shared)
- `alias_module` (shared)
- `auth_basic_module` (shared)
- `authn_core_module` (shared)
- `authn_file_module` (shared)
- `authz_core_module` (shared)
- `authz_host_module` (shared)
- `authz_user_module` (shared)
- `autoindex_module` (shared)
- `cgi_module` (shared)
- `deflate_module` (shared)
- `dir_module` (shared)
- `env_module` (shared)
- `expires_module` (shared)
- `fcgid_module` (shared)
- `filter_module` (shared)
- `headers_module` (shared)
- `mime_module` (shared)
- `mpm_prefork_module` (shared)
- `negotiation_module` (shared)
- `php_module` (shared)
- `proxy_module` (shared)
- `proxy_http_module` (shared)
- `reqtimeout_module` (shared)
- `rwrite_module` (shared)
- `setenvif_module` (shared)
- `socache_shmcb_module` (shared)
- `ssl_module` (shared)
- `status_module` (shared)## List of PHP Modules pre-installed on these Docker images (php -m)
[PHP Modules]
- `amqp`
- `ast`
- `bcmath`
- `bz2`
- `calendar`
- `Core`
- `csv`
- `ctype`
- `curl`
- `date`
- `dba`
- `decimal`
- `dom`
- `ds`
- `enchant`
- `ev`
- `event`
- `excimer`
- `exif`
- `FFI`
- `fileinfo`
- `filter`
- `ftp`
- `gd`
- `geospatial`
- `gettext`
- `gmp`
- `gnupg`
- `grpc`
- `hash`
- `http`
- `iconv`
- `igbinary`
- `imagick`
- `imap`
- `inotify`
- `intl`
- `json`
- `json_post`
- `ldap`
- `libsmbclient`
- `libxml`
- `lzf`
- `mailparse`
- `maxminddb`
- `mbstring`
- `mcrypt`
- `memcache`
- `memcached`
- `mongodb`
- `msgpack`
- `mysqli`
- `mysqlnd`
- `OAuth`
- `oci8`
- `odbc`
- `opencensus`
- `openssl`
- `openswoole`
- `pcntl`
- `pcov`
- `pcre`
- `PDO`
- `pdo_dblib`
- `PDO_Firebird`
- `pdo_mysql`
- `PDO_OCI`
- `PDO_ODBC`
- `pdo_pgsql`
- `pdo_sqlite`
- `pdo_sqlsrv`
- `pgsql`
- `Phar`
- `posix`
- `pspell`
- `raphf`
- `readline`
- `redis`
- `Reflection`
- `SeasLog`
- `session`
- `shmop`
- `SimpleXML`
- `smbclient`
- `snmp`
- `soap`
- `sockets`
- `sodium`
- `SPL`
- `sqlite3`
- `sqlsrv`
- `ssh2`
- `standard`
- `tokenizer`
- `uuid`
- `xdebug`
- `xml`
- `xmldiff`
- `xmlreader`
- `xmlrpc`
- `xmlwriter`
- `xsl`
- `yac`
- `yaml`
- `yar`
- `Zend OPcache`
- `zend_test`
- `zephir_parser`
- `zip`
- `zlib`
- `zstd`[Zend Modules]
- `Xdebug`
- `Zend OPcache`## Changelog
You can find the changes made in the [changelog](CHANGELOG.md) file
## Contributing
Contributions are welcome!
Leave an issue on Github, or create a Pull Request.## Licence
This work is under [MIT](LICENSE) licence.