# Docker Images You can run a Z-Push server using Docker containers. That is really usefull for developing, but it also can be used in production servers. Here are the basic instructions for a Nginx+PHP-FPM deployment. Feel free to contribute your Apache or other server approach. ## Using Docker Composer (In progress) ### Create and build basic images docker-compose -f basic.yml up ## Manual method ### Build a PHP-FPM image cd php-fpm docker build -t fmbiete/centos_zpush_php_fpm . ### Build a NGINX image cd nginx docker build -t fmbiete/centos_zpush_nginx . **NOTE**: this includes a SSL self-signed certificate (2048 bytes - valid until 2025), but it's intended only for development or testing uses. In production replace it with a real one. ### Create MariaDB container (optional for SQLStateMachine) docker run --name zpush_mariadb -e MYSQL_ROOT_PASSWORD=root_password -e MYSQL_USER=user_name -e MYSQL_PASSWORD=user_password -e MYSQL_DATABASE=database -v mariadb_lib:/var/lib/mysql -p3306:3306 -d fbiete/centos_epel_mariadb:10 **TODO**: Replace *mariadb_lib* with the full path when you will store the database files **TODO**: If using selinux remember to change the context type for *mariadb_lib* **TODO**: Replace *root_password*, *user_name*, *user_password*, *database* with the right values #### Load database schema mysql -u root -proot_password database -h 127.0.0.1 < sql/mysql.sql ### Create Redis container (optional for TopCollectorRedis, LoopDetectionRedis or PingTrackingRedis) docker run --name zpush_redis -v redis_data:/data -p 6379:6379 -d fbiete/centos_epel_redis:2.8 **TODO**: Replace *redis_data* with the full path when you will store the database files **TODO**: If using selinux remember to change the context type for *redis_data* ### Create PHP-FPM container docker run -d --name zpush_php_fpm -v zpush_repo:/var/www/z-push fmbiete/centos_zpush_php_fpm #### With MariaDB docker run -d --name zpush_php_fpm -v zpush_repo:/var/www/z-push --link zpush_mariadb:zpushmariadb fmbiete/centos_zpush_php_fpm #### With Redis docker run -d --name zpush_php_fpm -v zpush_repo:/var/www/z-push --link zpush_redis:zpushredis fmbiete/centos_zpush_php_fpm **TODO**: Replace *zpush_repo* with the full path to Z-Push code **TODO**: Remember to zpushmariadb and zpushredis as server name in the config for MariaDB and Redis ### Create NGINX container docker run -d --name zpush_nginx -v zpush_repo:/var/www/z-push --link zpush_php_fpm:zpushphpfpm -p 443:443 fmbiete/centos_zpush_nginx **TODO**: Replace *zpush_repo* with the full path to Z-Push code ### Stop containers docker stop zpush_nginx docker stop zpush_php_fpm docker stop zpush_mariadb docker stop zpush_redis ### Start containers docker start zpush_mariadb docker start zpush_redis docker start zpush_php_fpm docker start zpush_nginx ### Remove containers docker rm zpush_nginx docker rm zpush_php_fpm docker rm zpush_mariadb docker rm zpush_redis **NOTE**: The order of the containers in the operation is important