This project contains Dockerfiles that power apporz.com
-- my personal website.
I want to share my ideas and designs about Web-Deploying using Docker with you.
The whole app is divided into four Containers:
- Nginx is running in
Nginx
Container. Recieves requests from Clients then respond. - My App business-logic code and scripts is located at
WWW
Container. It just stores php scripts and static files. - PHP or PHP-FPM is put in
PHP-FPM
Container, it fetches php scripts fromWWW
then interpretes and executes them, making response to Nginx Server. If necessary, it will connect toMySQL
server as well. - Considering the flexibility and security,
MySQL
server must be independent of other containers.
At first, you should have had Docker installed.
# build Nginx Image
$ sudo docker build --tag micooz/nginx -f nginx/Dockerfile .
# build PHP-FPM Image
$ sudo docker build --tag micooz/php-fpm -f php-fpm/Dockerfile .
# build WWW Image
$ sudo docker build --tag micooz/www -f www/Dockerfile .
# pull MySQL Official Image
$ sudo docker pull mysql:latest
You must run the contaners in the following sequence:
- MySQL Container
- WWW Container
- PHP-FPM Container
- Nginx Container
The first two of which can be exchanged.
# Run MySQL Container
$ sudo docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
# see https://github.com/docker-library/docs/tree/master/mysql
# Run WWW Container
$ sudo docker run --name www -d micooz/www
# Run PHP-FPM Container
$ sudo docker run --name php-fpm --volumes-from www --link mysql:mysql -d micooz/php-fpm
# see https://github.com/docker-library/docs/tree/master/php
# Run Nginx Container
$ sudo docker run --name nginx -p 80:80 -p 443:443 --volumes-from www --link php-fpm:fpmservice -d micooz/nginx
# see https://github.com/docker-library/docs/tree/master/nginx
Have fun!
Micooz [email protected]
MIT