Add docker nginx & php-fpm
- add Nginx 1.23
- add PHP-FPM 8.1
You need to copy files to use Nginx and PHP.
Copy
docker/folder anddocker-compose.yamlto your CodeIgniter4 project root. https://github.com/codeigniter4/devkit/pull/37/files#diff-079c8a90be414928ae24510a296a33243d0c17372a82a91876d033137b089544R14
Got it! I rarely use Docker but let me know when this is ready for review and I will take it for a spin. I should be a good Guinea pig for the instructions given my noobiness
@kenjis I'm using docker in my development and here is the my setup.
I have folder docker with development and production folders, so I suggest to move development Dockerfile to docker/development and have an opportunity to add production folder if it's needed in future for users.
I started also to build Dockerfile with nginx & php-fpm separated, but there is no customisable options, if we want to customise something during the development it's a pain.
So I started my journey to find suitable image with php-fpm & nginx in one image with customisable options and in the end I found it. Here is the link to image:
https://github.com/tiredofit/docker-nginx-php-fpm
It works perfectly for development and even for production.
My Dockerfile for development looks now like:
FROM tiredofit/nginx-php-fpm:8.0-alpine_3.16
ENV STAGE DEVELOPMENT
ENV TIMEZONE Europe/Bratislava
ENV NGINX_WEBROOT /app/public
ENV PHP_MEMORY_LIMIT 1G
ENV PHP_ENABLE_PDO_SQLITE TRUE
ENV PHP_ENABLE_REDIS TRUE
WORKDIR /app
COPY . .
I'm enabling ENV variables directly in Dockerfile and I can overwrite them or add another in docker-compose if needed.
My docker-compose looks like:
version: "3.7"
services:
app:
build:
context: .
dockerfile: docker/development/Dockerfile
ports:
- 8080:80
volumes:
- .:/app
depends_on:
- redis
- mariadb
networks:
- codeigniter4
redis:
image: redis:alpine
ports:
- 6379:6379
volumes:
- redis:/data
networks:
- codeigniter4
mariadb:
image: mariadb:latest
ports:
- 3306:3306
volumes:
- ./initdb:/docker-entrypoint-initdb.d
- mariadb:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: gponcontrol
MYSQL_USER: gponcontrol
MYSQL_PASSWORD: gponcontrol
networks:
- codeigniter4
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
environment:
PMA_HOST: mariadb
PMA_PORT: 3306
ports:
- 8888:80
volumes:
- phpmyadmin:/sessions
depends_on:
- mariadb
networks:
- codeigniter4
networks:
codeigniter4:
volumes:
redis:
mariadb:
phpmyadmin: