How to setup a development environment for java in unix for each of the team member

Earlier I worked on Ruby on Rails.
We, all the developers used to pull the latest image from docker.
Once the docker is up and running, we were able to do development locally.
Once the code changes are done, we used to push to our respective git branch and once its merged, we used to deploy to production.
The app was hosted on Heroku.

(As you can see all the developers used to work on their own local copy. Postgress database configuration and dummy data was already set for local)

  • My docker container has no internet
  • docker-compose per microservice in local and production enironments?
  • Is docker commit an atomic operation?
  • Building a docker image using AWS Developer Tools
  • Container Orchestration for provisioning single containers based on user action
  • Expose Docker container to public ip
  • Now as a new startup, we are using java, spring, hibernate, quartz.

    We want to have similar architecture set up as I discussed in the beginning.

    I was looking for solution in google. Many authors and articles suggested to use jenkins and github but none of the articles mentioned a complete dev environment setup process sothat each developer can work independently.

    Main goal-

    1. Each developer must get his/her own local copy and work on it(Java)
    2. Pre configured database locally
    3. Dump dummy data
    4. Deployment process (what is the best hosting service for java app like heroku for rails)

    Ultimate Goal:-
    A new joinee comes runs a shell script and the entire development environment is set for him and he can start contributing to the project on the same day itself.

    Which database should be used with java considering it is a startup, database’s performance and cost and reliablity with Java?(Mysql or posstgresql or any other)

    Which OS should be used again considering it is a startup, database’s performance and cost and reliablity with Java?(Ubuntu or Windows, Current we are on Ubuntu)

    What is the best solution(step by step) for setting up entire independent dev environment for each developer while using java,spring,hibernate, quartz technologies?

  • AWS ElasticBeanstalk can't find Dockerfile
  • Spring Boot can't read application.properties in Docker
  • docker push error for ibm bluemix watson
  • Grails 3.1.4 and Docker - grails commands return “No profile found for name web”
  • Cassandra on Docker - nodetool connection issue
  • Docker config file location on windows to, e.g., enable insecure registry / docker options
  • One Solution collect form web for “How to setup a development environment for java in unix for each of the team member”

    I’ll answer what we did in a previous startup I’ve worked at. Worked well for us, maybe there other better alternatives.

    • Postgres is a good db.
    • We used Centos for production so Fedora locally, so it will be the same linux family. Anyway I don’t see any reason to use Windows for development.
    • You can use hibernate to create the db schema and tables from your java pojo entities.
    • We had scripts which pre-populate certain tables with desired values. E.g. users table.
    • All scripts were integrated to run by executing maven commands.
    • We used scripts to create the dev env, with configuration of local apache httpd proxy and many other things. It can be quite complicated.
    • We used Artifactory to hold and cache the current and previous maven artifacts, both of our product and our maven dependencies.
    • As for Quartz, it shouldn’t be a problem. Notice that there is an integration of Spring with Quartz, use it.
    • We used local Gitlab as our repo.
    • We used local hosted Jenkins for our CI.
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.