KEMBAR78
Docker Workshop Notes 2 | PDF | Virtual Machine | Web Application
0% found this document useful (0 votes)
272 views8 pages

Docker Workshop Notes 2

1) Docker is a containerization software that is used to simplify application deployment by packaging code and dependencies into containers. 2) The document discusses Docker concepts like containerization, architecture, commands, and provides examples of Dockerfiles for Java web apps, Spring Boot apps, and Python apps. 3) It also covers Docker Compose and provides an example of a Docker Compose file for a Spring Boot app connected to a MySQL database.

Uploaded by

nikhilb.cv18
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
272 views8 pages

Docker Workshop Notes 2

1) Docker is a containerization software that is used to simplify application deployment by packaging code and dependencies into containers. 2) The document discusses Docker concepts like containerization, architecture, commands, and provides examples of Dockerfiles for Java web apps, Spring Boot apps, and Python apps. 3) It also covers Docker Compose and provides an example of a Docker Compose file for a Spring Boot app connected to a MySQL database.

Uploaded by

nikhilb.cv18
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 8

Join Docker whatsapp group for notes and videos :

https://chat.whatsapp.com/HplvBTFASKp13WX7vofeHD

=================
Docker Setup
=================

https://github.com/ashokitschool/DevOps-Documents/blob/main/02-Docker-Setup.md

=========
Docker
=========

=> Docker is a containerization software

=> Docker is used to simplify our application deployment process

=> Docker will take care of required dependencies of our application

=> Using Docker we will run our application as a container

============================
What is Containerization ?
============================

=> The process of packaging our application code + dependencies as single unit and
executing as a container is called as Containerization.

=> Container is an virtual machine (linux vm)

=====================
Docker Architecture
=====================

Dockerfile
Docker Image
Docker Registry
Docker Container

=================
Docker Commands
=================

docker images : To display available docker images

docker pull <image-name> : download docker image

docker run <image-name> : creating docker container

docker ps : display running docker containers

docker ps -a : display running + stopped containers

docker rmi <img-id> : To delete docker image

docker rm <conainer-id> : To delete stopped docker container


docker stop <container-id> : To stop running container

docker start <container-id> : To re-start stopped container

docker logs <container-id> : To see container logs

docker system prune -a : to delete un-used images + stopped containers

----------------------
Spring Boot Rest api
----------------------

docker run -d -p 9090:9090 ashokit/spring-boot-rest-api

-d represents detached mode

-p represents port mapping

Note: We need to enable host port in ec2 vm security group inbound rule to allow
the traffic.

URL : http://public-ip:host-port/welcome/ashok

=================
Day-01 : Summary
=================

1) What is Docker
2) What is Containerization
3) Advantages with Containerization
4) Docker Architecture
5) Docker Setup
6) Docker Commands
7) Running SpringBoot app using docker image

============
Dockerfile
============

It contains instructions to build image

We will specify application dependencies in Dockerfile

Naming convention : Dockerfile

====================
Dockerfile Keywords
====================

FROM
MAINTAINER
COPY
RUN
CMD
EXPOSE
WORKDIR
ENTRYPOINT

====
FROM
=====

=> It is used to specify base image required for our application.

FROM : openjdk

FROM : tomcat8.5

FROM : mysql8.5

FROM : python-3.1

FROM : node-19

============
MAINTAINER
============

=> It is used to specify author of Dockerfile

MAINTAINER <Ashok@gmail.com>

======
COPY
======

=> It is used to copy the files from host machine to container machine

COPY <SRC> <DEST>

COPY target/app.war /usr/app/tomat/webapp.war

====
RUN
====

It is used to execute instructions while creating docker image

RUN 'sudo apt install git'

RUN 'sudo apt install maven'

RUN 'git clone <repo>'

Note: We can run write multiple RUN instructions in dockerfile and they will be
processed from top to bottom.

=====
CMD
=====

=> It is used to execute instructions while creating docker container

CMD 'java -jar <jar-file>'


Note: If we write multiple CMD instructions docker will process only last CMD
instruction.

========
EXPOSE
========

It is used to specify container port number

EXPOSE 8080

=========
WORKDIR
=========

=> It is used to specify working directory

(path change)

WORKDIR /usr/app/

------------------------Dockerfile-----------------------
FROM ubuntu

MAINTAINER <Ashok>

RUN echo 'run msg - 1'

RUN echo 'run msg - 2'

CMD echo 'cmd msg - 1'

CMD echo 'cmd msg - 2'

---------------- docker build -t <imagename> . ------------

$ docker build -t <image-name> .

$ docker images

$ docker login

$ docker push <image-name>

--------------------------------------------------------------
ashokit/app201:v1
ashokit/app201:v2

ashokit/app201:latest

docker pull ashokit/app201:v1


---------------------------------------------------------------

--------Dockerfile for Java Web App (no springboot)------------

FROM tomcat:8.0.20-jre8

MAINTAINER <Ashok>

EXPOSE 8080

COPY target/app.war /usr/app/local/tomcat/webapps/

------------Dockerfile for springboot app--------------------

FROM openjdk:11

COPY target/sbapp.jar /usr/app/

WORKDIR /usr/app

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "sbapp.jar"]

-------------------------------------------------------------

=============================
Dockerizing Spring Boot App
=============================

Git Repo: https://github.com/ashokitschool/spring-boot-docker-app.git

1) Install git client in host vm & clone repo

$ sudo yum install git


$ git <repo-url>

2) Install maven in host vm.

$ sudo yum install maven

3) Go inside project directory & perform maven build

$ cd <dir-name>
$ mvn clean package

4) Build docker image

$ docker build -t ashokit/sbapp .


5) Run docker container using docker image

$ docker run -d -p 8080:8080 ashokit/sbapp

6) Enable host port in security group inbound rules

7) Access application in browser

http://3.108.219.241:8080/

===============================
Dockerizing Python Application
===============================

https://github.com/ashokitschool/python-flask-docker-app.git

$ git clone <repo>

$ cd <dir-name>

$ docker build -t pyapp .

$ docker images

$ docker run -d -p 5000:5000 pyapp

================
Docker Compose
================

=> It is used to manage multi container based applications

## Docker-Compose Setup :
https://github.com/ashokitschool/DevOps-Documents/blob/main/03-Docker-Compose-
Setup.md

=> To work with docker compose we need to create docker-compose.yml file

------------------SpringBoot-MySQL-Docker-Compose.yml------------------

version: "3"
services:
application:
image: spring-boot-mysql-app
ports:
- "8080:8080"
networks:
- springboot-db-net
depends_on:
- mysqldb
volumes:
- /data/springboot-app
mysqldb:
image: mysql:5.7
networks:
- springboot-db-net
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=sbms
volumes:
- /data/mysql

networks:
springboot-db-net:

------------------SpringBoot-MySQL-Docker-Compose.yml------------------

##Git Hub Repo : https://github.com/ashokitschool/spring-boot-mysql-docker-


compose.git

$ git clone <repo-url>

$ sudo apt install maven

$ cd <project-dir>

$ mvn clean package

$ docker build -t spring-boot-mysql-app .

$ docker images

$ docker-compose up -d

$ docker-compose ps

Note: Enable 8080 in security group

=> Access application in browser

URL : http://public-ip:host-port/

$ docker-compose down

========================
Docker Workshop Summary
========================

1) What is Docker

2) Why Docker

3) What is Containerization

4) Docker Setup in Linux

5) Docker Architecture

6) What is Dockerfile

7) Dockerfile Keywords
8) Working with Docker Images

9) Docker Hub

10) Working with Docker Containers

11) Java Web App with Docker

12) Spring Boot app with Docker

13) Python app with Docker

14) Docker Compose

15) Spring Boot + MySQL using Docker Compose.

You might also like