https://github.com/ColinFay/chuck
10x Shiny App with Chuck Norris jokes
https://github.com/ColinFay/chuck
Last synced: 4 months ago
JSON representation
10x Shiny App with Chuck Norris jokes
- Host: GitHub
- URL: https://github.com/ColinFay/chuck
- Owner: ColinFay
- Created: 2019-12-18T07:43:00.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-04-06T08:02:37.000Z (about 5 years ago)
- Last Synced: 2024-08-13T07:13:40.927Z (8 months ago)
- Language: R
- Homepage:
- Size: 26.4 KB
- Stars: 18
- Watchers: 4
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
- jimsghstars - ColinFay/chuck - 10x Shiny App with Chuck Norris jokes (R)
README
# Chuck
`Chuck` is a 10x Shiny app designed as a playground for deploying Shiny apps to Docker / Kubernetes.
It contains a Shiny app that needs a Mongo DB backend to work. The connection information are passed with environment variables.
The app simply pulls a random Joke from the Chuck Norris API (), and allow you to save it to the mongo db instance, or skip.
The UI also allows you to retrieve information from the MongoDB instance.
## Infrastructure
### chuck
The Shiny apps that reads and write in a mongo instance at :
```r
mongo_port <- Sys.getenv("MONGOPORT", 27017)
mongo_url <- Sys.getenv("MONGOURL", "mongodb://127.0.0.1")
mongo_db <- Sys.getenv("MONGODB", "chuck")
mongo_collection <- Sys.getenv("MONGOCOLLECTION", "norris")
launch_mongo(
collection = mongo_collection,
db = mongo_db,
url = sprintf(
"%s:%s",
mongo_url,
mongo_port
)
)
```#### Mongo
```
docker run -v $(pwd)/db:/data/db -p 12334:27017 -d mongo:3.4
```## Local Deployment
### Build
```
git clone https://github.com/ColinFay/chuck && cd chuck && docker build -t colinfay/chuck .
# OR
docker pull colinfay/chuck
docker pull mongo:3.4
```### Launch
```
docker network create chucknetdocker run -v $(pwd)/db:/data/db -p 27017:27017 -d --name mongo --net chucknet mongo:3.4
docker run -e MONGOPORT=27017 -e MONGOURL=mongo -e MONGODB=pouet -e MONGOCOLLECTION=pouet -p 3838:3838 --name chuck --net chucknet -d colinfay/chuck && sleep 2 && open http://localhost:3838
# TRY ANOTHER MONGODB & SHINY PORT
docker run -e PORT=1234 -e MONGOPORT=27017 -e MONGOURL=mongo -e MONGODB=pif -e MONGOCOLLECTION=paf -p 1234:1234 --name chuckbis --net chucknet -d colinfay/chuck && sleep 2 && open http://localhost:1234
```### Stop
```
docker stop chuck && docker rm chuck
docker stop chuckbis && docker rm chuckbis
docker stop mongo && docker rm mongo && rm -rf $(pwd)/db
docker network rm chucknet
```## Deploy on GKE
### Create Cluster
### Open Cloud Shell
+ Open it in your project, for ex `gcloud container clusters get-credentials my-first-cluster-1 --zone us-central1-c --project bla-bla-12345`
```
cd chuck/
kubectl apply -f kube/
kubectl get pods
```+ Go to services & Ingress, create the ingress for Chuck shiny
+ Wait for ingress to be ready