mozilla

Create one docker image which includes Redis


#1

Hey all,

is it possible to create one docker image which includes a running Redis server?
Background: I am not able (from technical perspective) to deploy a docker-compose file and I would like to have one docker file (with the known environment variables) which I can start that includes a Redis Server.

In the end I would like to run a commend alá

docker run -t -i -e NODE_ENV='development' -e 
TALK_MONGO_URL='mongodb://<mongodatabase>:27017/talk' -e  
TALK_REDIS_URL='redis://redis:6379' -e TALK_ROOT_URL='http://127.0.0.1:3000' -e 
TALK_PORT='3000' -e TALK_JWT_SECRET='password' -p 3000:3000 --name talk <myimage>

#2

This is the way we advise using Docker with Talk https://docs.coralproject.net/talk/installation-from-docker/

When you say “from a technical perspective” you’re not able to use docker-compose, what do you mean?

Can you give a full overview of the architecture you’re aiming for here, and your end goal, including the size of the site you’re implementing comments on and its setup. What is the site stack? Where are you hosting the site? Where are you hosting Talk? What sort of resources are you using for Talk? What is your end goal?

If you’re veering away from our recommended approach, it makes it extremely difficult to help you.


#3

Hey Kim,

thanks for your response. I didn´t want to go into too much detail when I said “from a technical perspective”, but now that you are asking I share some more insights on this.
Microsofts Azure Cloud is able to deploy docker instances easily via App Services. Those docker instances are running in an isolated environment which means that you can not create a subnet. This is why the Docker instance needs to connect to an external Redis system which can not run without authentication since it needs to be public available (via internet).
My idea is, creating one docker image which includes both, Talk and Redis. At the end of the day I run one single Docker instance which then connects to the MongoDB, nothing more.
There are also other opportunities to deploy Docker services on Azure for example running a VirtualMachine (which I´m currently doing for testing purpose), but I would like to use all the benefits like auto scaling etc which comes with the Azure App Service if possible. Also Kubernetes could be an option, but this feels like to shoot sparrows with cannons.

I do not expect a fully flashed solution here, but maybe some ideas, comments or maybe experience.


#4

Thanks for all this detail Simon! Sounds like a very worthwhile endeavor.

Unfortunately we don’t support Azure currently and it’s not on our roadmap, so our team can’t give much advice here - we simply don’t have the experience. I would recommend putting a call out to either the Azure community or Docker communities and see if they could provide some advice on the best way to host dockerized apps there, including how to autoscale, use Kubernetes, etc.


#5

Hi Kim,

this is the reason why I didn´t put too much detail into my question. The question was not how to deploy on Azure but how to create one docker file which contain both, Talk and Redis.
The only thing I could imagine is merging both Dockerfiles in order to create one.
But I do understand that this does not belong to your daily/operational tasks, so please do not put effort into my request. I was just asking in case someone could imagine merging both files could work, or maybe could not work.

Best