Demo on scaffolding application creation to deployment with docker. This blog explains about
- How to create the application?
- How to run locally as a developer?
- How to create the docker image?
- How to push and pull the created docker image to the docker hub?
- How to deploy on the cloud? We use docker playground as a cloud provider for this demo.
After the successful installation of the pre-requisites, follow the below steps
Create the Application
We use the
jhipster yeoman generator to create the application in the interactive mode by answering the few questions given generator about the tech stack, ports, front end technology, and so on. Let's scaffold the app.
> jhipster 1. Which *type* of application would you like to create? Monolithic application (recommended for simple projects) 2. What is the base name of your application? myapp2 3. Do you want to make it reactive with Spring WebFlux? no 4. What is your default Java package name? org.jhipster.myapp2 5. Which *type* of authentication would you like to use? JWT authentication (stateless, with a token) 6. Which *type* of the database would you like to use? SQL (H2, PostgreSQL, MySQL, MariaDB, Oracle, MSSQL) 7. Which *production* database would you like to use? MySQL 8. Which *development* database would you like to use? MySQL 9. Which cache do you want to use? (Spring cache abstraction) Ehcache (local cache, for a single node) 10. Do you want to use Hibernate 2nd level cache? no 11. Would you like to use Maven or Gradle for building the backend? Maven 12. Do you want to use the JHipster Registry to configure, monitor, and scale your application? No 13. Which other technologies would you like to use? Elasticsearch as search engine 14. Which *Framework* would you like to use for the client? Angular 15. Do you want to generate the admin UI? Yes 16. Would you like to use a Bootswatch theme (https://bootswatch.com/)? Default JHipster 17. Would you like to enable internationalization support? Yes 18. Please choose the native language of the application? English 19. Besides JUnit and Jest, which testing frameworks would you like to use? Cypress 20. Would you like to install other generators from the JHipster Marketplace? No 21. Would you like to generate code coverage for Cypress tests? [Experimental]? No
Run the application
Run in Local
Run the docker container for MySQL
cd src/main/docker/ docker-compose -f mysql.yml up -d
Run front end on one terminal
npm install npm start
Run backend on other terminal
Push the code to git repository either on GitHub, Bitbucket, Gitlab
- Create the repository in the git server
Push your project to the GitHub/Bitbucket/Gitlab
cd <App created> git add --all git commit -am "MESSAGE " git remote add origin <REPO_URL> git push -u origin master
To Dockerize your Application
To achieve this, first build a docker image of your app by running
./mvnw -Pprod verify jib:dockerBuild
Create the Docker Image and push to docker hub
- For this, we need the docker hub account
- Steps to create the docker image is available in the
- Push the docker image
Provide your username and password to push the docker image to dockerhub
docker login docker tag <IMAGE CREATED> <dockerhub-user-name/IMAGE_NAME> docker push <dockerhub-user-name/IMAGE_NAME>
Run Application on Docker Playground - TRY IT IF YOU CAN
You need docker hub credentials
- Login and create the instances
- RUN THE APPLICATION PULLING THE IMAGE FROM DOCKER HUB
- clone the repo
- pull the docker images from the docker hub and retag back to the
docker login docker pull <dockerhub-user-name/IMAGE_NAME> docker tag <dockerhub-user-name/IMAGE_NAME> <IMAGE CREATED>
- run the app
cd <App CLONED> cd src/main/docker/ docker-compose -f app.yml up -d
To expose these ports outside your dev PC
- Edit the app.yml file
- Remove the "127.0.0.1:" prefix
cd <App CLONED> cd src/main/docker/ vi app.yml