Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to launch an app via Docker on every Pull Request?

I run Jenkins and my app is dockerized, i.e. when I run the container it exposes port 3000 and I can point my browser there. On every Github PR I would like to deploy that git commit to a running container somewhere and have Jenkins post back to the PR the link where it can be accessed. On any PR updates it gets auto re-deployed and on PR close/resolve it gets torn down.

I have looked at kubernetes and a little rancher, but what's the easiest way to get this going assuming I can only deploy to one box?

like image 556
tesserakt Avatar asked Mar 01 '17 19:03

tesserakt


People also ask

Can we run each app in an isolated container in the Docker?

The Docker platform Docker provides the ability to package and run an application in a loosely isolated environment called a container. The isolation and security allows you to run many containers simultaneously on a given host.


1 Answers

There is a jenkins plugin github-pullrequest can resolve your problem.

Prerequisites:

  1. You have a jenkins server can access by internet if you want trigger your build by a webhook.
  2. Your have a github API token to access/admin your git repository, it can be generate by yourself in settings.

Please follow the guide configuration to setup your jenkins integration with github.

After configuration:

  • you can trigger your build by PR events: opened/commit changed/closed, or comment with specific pattern.
  • you can get a PR status via environment variable ${GITHUB_PR_STATE}, so you can start or stop a container on specific value.
  • you can publish a comment to a PR to tell the address of your web service after you started docker container.

About expose port of cotainer with multi PR, your can just run container with -p 3000, it will auto expose a port in a range on the docker host, docker port <container> will show the specific port number, so for example:

  • container1 with address <host>:32667 for PR1
  • container2 with address <host>:35989 for PR2
like image 179
Shawyeok Avatar answered Oct 22 '22 04:10

Shawyeok