nazar-pc / docker-webserver

WebServer (MariaDB, PHP-FPM, Nginx) composed from several separate containers linked together
https://registry.hub.docker.com/u/nazarpc/webserver/
MIT License
291 stars 53 forks source link

Advanced Version ? still under development #32

Open gowrav-vishwakarma opened 6 years ago

gowrav-vishwakarma commented 6 years ago

Hi,

Was reading your advanced file and looks like it is an abandoned work. Does it still in development ?

nazar-pc commented 6 years ago

Advanced features are not actively developed, that is right, primarily because there are some things in Docker itself that make seamless experience of building a cluster impossible.

However, this project is not abandoned, it is maintained when needed and new builds are automatically done by Docker Hub with latest security updates. I also have plans to upgrade PHP to version 7.2 soon.

If you have any specific feature request or issues with this project - feel free to open corresponding issue or submit a pull request. I'm the only developer here, also I have lots of other open source projects and it is not feasible for me to actively work on all of them at the same time.

gowrav-vishwakarma commented 6 years ago

Okay, so we are working on some hosted service Drag and drop based website/e-commerce builder with CRM and ERP system. And looking to setup docker way ... We are new to docker thing but getting it up quick.

We are experimenting with docker to achieve a scale-able system with php/apache/mariadb-galera-master-master-cluster (or may be xtradb if code is compatible)/distributed volume for user files.

I am responsible to provide some proof of concept and your advanced system is most near to what we want to achieve. So, we are ready to contribute in the system while we maintain things for our system here.

Any better way to communicate and tell you more about our system ? can I email you to call at any other chat system ?

nazar-pc commented 6 years ago

I roughly understand what you need, it is exactly what I was trying to achieve, but as mentioned in #23 there are some features on Docker side that are lacking before it is possible to completely automate the most of it.

You should be able to achieve scalability already as soon as you provide scalable volume to all of the containers you're using and specify SERVICE_NAME and other variables as in advanced docs.

For instance, MariaDB container is always a cluster, but in case of singe instance it is a cluster with 1 node. PHP and Nginx are scaling naturally as soon as you have the same scalable file system for them and HAProxy is also ready to proxy requests to multiple nodes. So give it a try and let me know if it works.

You can contacts me via email specified in GitHub profile if needed, but I'd prefer to have more discussion in public so that other people might help us or learn something.

gowrav-vishwakarma commented 6 years ago

Hi, So after a lot study on docker, docker swam mode, still a lot of things are with a way too much ways to do.

If you agree, we can implement some simple demo php application and write its complete tutorial for others. And the case I am looking is most common one.

a docker swarm mode docker-compose.yml file that should do following

I have a php code where person uploads files and we are looking for scalable php/nginx or apache/mariadb stack with following things

  1. My app has config files for nginx and php but we are not creating a combined container so how to mount these files in another container is an issue

  2. proper bootstraping of galera

  3. any distributed file system

  4. php sessions ?

May be it cannot be a single docker-compose.yml but a series of process ?

Can you help here !!!

nazar-pc commented 6 years ago
  1. You need to create Docket volume with driver/plugin that can work across cluster and each Nginx/PHP will need to use it instead of data container in my examples.
  2. As soon as you have 1. it should just work already, optionally you'll want to mount /tmp/mysql on all nodes to local storage or tmpfs so that only one copy of MariaDB is permanently stored in distributed file system and you don't create unnecessary load on it
  3. Same as 1. or anything else like AWS S3 for uploaded files
  4. For scalable application you'd better use some custom session mechanism instead of default offered by PHP or at least use external storage like Redis