ortonomy / fling-server

fling-server is a node.js postgraphql backend for a flingapp front-end.
GNU General Public License v3.0
1 stars 3 forks source link

[deploy] plan for fling.work ecosystem #19

Open ortonomy opened 6 years ago

ortonomy commented 6 years ago

A deployment plan for fling.work app ecosystem so we can put it through CI on codeship and then deploy to heroku.

Questions:

  1. Do we containerize the whole thing?
  2. Do we need to? How does

heroku organize the following react components

Components of the system

DoD

Jskobos commented 6 years ago

Containers or no, sounds like it would be worth it to start on some kind of CI pipeline. e.g. Travis can run every time a merge to master is made, run the test suites, run a build pipeline with Babel (Gulp? Webpack?), then either rsync the resulting build to the server or else containerize it, push it to Docker Hub, and then the server(s) and/or any developers can pull and run the new containers.

ortonomy commented 6 years ago

Yeah, I agree. Coderbunker has a codeship team which we can use, so thinking of using that as CI.

The react app I think comes with a build step already built in, so we just then need to rsync or ssh the content to whatever server.

Once you've containerized it, do we need to put it on docker hub, or can we copy the new containers directly the server? What does docker hub get us?

cwkeam commented 6 years ago

What I am familiar with is saving the script that creates the container, rsync-ing the script to the server, and running the script in the server to build the container there. You would want a way to access the image first, which could be done using docker hub or by running a script that builds it.

screen shot 2018-03-05 at 11 12 24 pm

What I usually do is having a script that, by running it, rsyncs all the content in the local computer to the server. Then I would manually stop the currently running container then run the script that creates the container, updating whatever content the server is serving.

Jskobos commented 6 years ago

Yeah, a Dockerfile works too. Docker Hub makes it easy for anyone to pull the containers and run them, but building from a publicly available Dockerfile is pretty much the same thing.

On Mon, Mar 5, 2018 at 10:16 AM, Chan Woo Kim notifications@github.com wrote:

What I am familiar with is saving the script that creates the container, rsync-ing the script to the server, and running the script in the server to build the container there. You would want a way to access the image first, which could be done using docker hub or by running a script that builds it.

[image: screen shot 2018-03-05 at 11 12 24 pm] https://user-images.githubusercontent.com/8522953/36982588-2b986de4-20cb-11e8-84c8-e906e3df9dba.png

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ortonomy/fling-server/issues/19#issuecomment-370451626, or mute the thread https://github.com/notifications/unsubscribe-auth/ABjIA0Ly08nqv5z89BFMweqAaYVerVKGks5tbVbbgaJpZM4Sb2Xd .

cwkeam commented 6 years ago

But don't you pull Docker images, not containers, from Docker Hub? Same case for building it from a Dockerfile. I wasn't talking about building the image from a Dockerfile from the remote server, but rather having an existing image (Docker Hub would be convenient) and containerizing whatever would be there on the server that we need.

How it's one thing to have a Docker image in Docker Hub: https://hub.docker.com/r/jupyter/datascience-notebook/

But another thing to build a container in it: docker run -it --rm -p 8888:8888 jupyter/datascience-notebook

Especially in my example, it's actually more quite flexible because the volume is specified in the script that builds the container, not in the Dockerfile, attaching it to the container, not the image. That would make it so that we use the same image every time that gives us our ability to use PostgreSQL, Node.js, and more, but just stop and re-run the script that builds the container every time we make a merge to master, instead of rebuilding the image every time (this would take ages).

Jskobos commented 6 years ago

Yeah, Docker hub is just convenience. docker run -d nginx and you're done for example, it'll pull and launch the official NGINX image in one go. But again, public Dockerfile is basically the same thing.

On Mon, Mar 5, 2018 at 10:53 AM, Chan Woo Kim notifications@github.com wrote:

Wait, but don't you pull Docker images, not containers, from Docker Hub? Same case for building it from a Dockerfile.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ortonomy/fling-server/issues/19#issuecomment-370464472, or mute the thread https://github.com/notifications/unsubscribe-auth/ABjIA9x4_T2XZsV4w3XDoUnNpC7HZMypks5tbV9zgaJpZM4Sb2Xd .