Category Archives: Miscellaneous

Adding docker support in Spring Boot application

Adding docker containerization support in a working Spring Boot application is surprisingly easy.

Step 1: Add the docker maven plugin to your pom file.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.3.4</version>
            <configuration>
                <repository>${project.artifactId}</repository>
            </configuration>
        </plugin>
    </plugins>
</build>

Step 2: Build the application as well as the docker image

mvn clean package install dockerfile:build

Step 3: I have a local docker registry setup in my Lan so I prefer to push this image to my network registry manually (this can be automated as well however).

docker tag my-app:latest my_network_registry_host:5000/my-app

Step 4: Now we can bootup this docker image anywhere in the network.

docker run \
--detach \
--link <any database link> \
-e <Environment variable 1> \
-e <Environment variable 2> \
-p 8080:8080 \
--name my-app \
my_network_registry_host:5000/simply-hr
 Step 5: Checkout the application URL @ http://localhost:8080. Tail the log if you want to
docker logs --follow simply-hr

Setting up Redmine docker instance

In order to setup a fully functional Redmine server via Docker I use the following consolidated command:

docker run \
--detach \
--name redmine \
--link mysql:mysql \
--publish 3000:3000 \
--env="REDMINE_DB_MYSQL: redmine" \
--env="REDMINE_DB_PASSWORD: redmine" \
--volume /Volumes/DATA/Abhinav/Docker/redmine/files:/usr/src/redmine/files \
redmine

This connects my mysql docker instance with sonar and it is able to create tables and start using MySQL properly for storing all it’s data.

Setting up Sonarqube docker instance

In order to setup a fully functional Sonarqube server via docker I use the following consolidated command:


docker run \
--detach \
--name=sonarqube \
--publish 9000:9000 \
--publish 9092:9092 \
--env="SONARQUBE_JDBC_USERNAME=sonar" \
--env="SONARQUBE_JDBC_PASSWORD=sonar" \
--env="SONARQUBE_JDBC_URL=jdbc:mysql://mysql:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true" \
--link mysql:mysql \
sonarqube:5.1

This connects my dockerized mysql instance with sonar and it is able to create tables and start using MySQL properly for storing all it’s data.

Setting up MySQL docker instance

In order to setup a fully functional MySQL server via docker I use the following consolidated command:

docker run \
--detach \
--name=mysql \
--env="MYSQL_ROOT_PASSWORD=abcd1234" \
--publish 6603:3306 \
--volume=~/Docker/mysql/conf.d:/etc/mysql/conf.d \
--volume=~/Docker/mysql/mysql-datadir:/var/lib/mysql \
mysql

The advantage of the above approach is that the configuration files can be defined under ~/Docker/mysql/conf.d folder on my system and it will be picked up whenever I bootup this instance. The second thing is that all information written by this instance will be stored outside of VM in the path ~/Docker/mysql/mysql-datadir on my system. So In case this VM goes away due to some unexplained reasons I can still bootup another docker instance of MySQL and point it to this data directory.

Google Graveyard

We are so focused on the next thing being done or released that we don’t really have time to think about what was discarded. An interesting link about Google Graveyard which basically lists the products / tools abandoned by Google over a period of time.

I think the mantra of success is not only about what to do next but what to move on from. Falling in love with your creation or an idea can be dangerous if you are not looking at the big picture of adoption rate and impact being created by your work.

Self Motivation!

Need no stars to light the way,
Hold no hands to cross those hurdles,
Borrow no words to floor the world,
Look for no shared glory to shine,
Make no friend pay your price,
When you find your feet,
Others fall in step.

A truly inspiring quote which often come in handy.

Entrepreneur as Manager – Some nuggets of advise

Being an Entrepreneur is hard and being a good manager is harder still. An entrepreneur cannot succeed in isolation so some employees have to be hired. If the employee turns out to be a performer then it is good for business but if the volume of work done doesn’t improve then stop and have a look. Your cash is important and you cannot afford to spend it on paying salary if you are not getting returns.

Agreed most employees are looking for doing a good job but there are some exceptions who rather not do their job and idle their time at your expense. These exceptions have to be either weeded out or they should be given a clear sign that you cannot be manipulated and that their lazy business should stop immediately. Look for the following warning signs and some advice on how to handle it.

1) Don’t you remember! I already told you about this ..
An employee can attempt to cover mistakes and bad news by using this statement. The easiest way to avoid conveying a bad news is to write it somewhere in the middle of a large email or at the end of a lengthy email. Remember these mistakes or bad news might jeopardise your business in long run. Hence you cannot afford to ignore it from a manager’s and owner’s perspective so you need to be very careful about this conduct.

Solution: Make it officially mandatory that an employee should send one page summary email for every lengthy email sent. Make it clear that the employee sending the email will be responsible if the one page summary email excludes something of importance. The rule of thumb is a 1000 to 2000 worded email usually has a summary of 100-200 words only.

2) This is a bad option, as it won’t work
Some employees make a career out of looking at the impossibility and difficulty of the assigned task. They might come up with explanations as to why a given idea is impractical and won’t be viable. Positive and negative criticism is usually part of the team work but just negative criticism at every instance just doesn’t cut.

Solution: Whenever this happens tell the employee “Fine, this won’t work; now tell me what will work”. If this doesn’t work tell the employee “Please come back to me with a way to make it work”. If somebody thinks an idea or approach is wrong ask this person what would be right approach or a better idea. Remember people gather together in a team to get work done together. In my experience if somebody criticizes some aspect of the job done but has answer as to how to improve it is a valuable asset to your team; however if criticism comes without any positive options or alternative; then it is usually a warning sign.

3) I cannot do this job unless you do a part of it ..
Many times employees would try to delegate their task to you by telling you that you need to do some work before they can do their job. It’s basically a subtle way of passively adding tasks to your todo list. This usually has the repercussion that you end up doing their job while ignoring your own.

Solution: Whenever this happens and somebody asks you to do something which ideally is supposed to be done by them just hand the task back to the employee. Tell him “I assigned you this task keeping in mind your role and experience in this team, so you figure out how to do it”. If the employee is really not able to perform and complete the task offer to coach and teach rather than assist.

4) There are only 2 or 3 alternative in this situation which I can think about ..
By giving you a certain list of alternatives your employee can attempt to coax you into an approach which might be convenient to them but not beneficial for the company on the whole. It is possible that 1 or 2 of these alternatives are impractical and only 1 approach among them is practical. The employee might be hoping that you will definitely choose the only practical option which has been provided to you.

Solution: Just tell the employee “You should come to me with viable alternatives only and not with alternatives which are clearly impractical”. The employee will get the cue.

5) Can someone else complete my task? I have to leave now. I may not come tomorrow.

As a manager you have to be cognizant of the fact employees are after all human beings and they might have personal trying reasons to leave the task at hand and attend to some family/personal need. However if this becomes a regular or a frequent trend then you have a serious problem. If you do the task of the absent employee then you are setting a bad precedent which should not be encouraged and if your allocate the task of the absent employee to another employee then you might be encouraging discontent.

Solution: Tell the employee “Your involvement is important. So you see you can always complete your pending work when you come back”. If you do it frequently enough this problem will never happen with the concerned employee unless the employee is willing to go on a long leave.

Articles Digest for Week #5

Some Articles which I found quite interesting

iOS conferences around the globe
http://www.raywenderlich.com/29341/top-10-ios-conferences-in-2013

Popular shortcuts of Eclipse.
http://pcquest.ciol.com/content/Developer/2013/113013001.asp

Control your Android phone via a Windows PC.
http://pcquest.ciol.com/content/handson/2013/113012903.asp

Cool and Innovative apps using Raspberry PI
http://pcquest.ciol.com/content/techtrends/2013/113012903.asp
http://www.businessinsider.com/10-mind-blowing-raspberry-pi-projects-2013-1

Service Tax Payment in India for digital income
http://www.labnol.org/india/service-tax-bloggers/27749/

As a policy I disable Adobe Flash and Java on any web browser I use on my computers. This article supplements this idea by showing how to disable plugins in Chrome.
http://www.labnol.org/software/google-chrome-flash-crashes/27753/

Interesting article about generating leads online
http://www.incomediary.com/how-to-attract-leads-and-land-clients-online

Finding Duplicates of Images even if the duplicates are retouched
http://www.megaleecher.net/Duplicate_Image_Finder_Pro

An interesting tool to clear up space on your phone
http://www.megaleecher.net/node/2072

Some tech secrets from Business Insider
http://www.businessinsider.com/business-insider-tech-secrets-2013-2

Installing and running Android on a Windows PC
http://geeknizer.com/install-run-android-on-windows-pc-natively/