Docker: Accelerated Container Application Development
1. Developers can deploy, run, and manage applications.
2. Deploy applications quickly.
3. Docker is a containerization platform that simplifies the process of deploying and managing applications. Applications run along with their dependencies.
Docker Images :
1. A copy of our project.
2. Images are made from source code, libraries, and external dependencies.
3. Images are created from source code.
4. Example: Node setup, application code, installed libraries, Docker files.
5. Once an image is created, it cannot be updated; we can create a new image instead.
Docker Container :
1. A container runs applications using images.
2. Containers run independently.
3. Example: If 3 images are available, all these images can run independently.
Docker Commands :
1. docker build -t folder/dockername . // Creates a project image.
2. docker run -p 5000:5000 -d dockerImageName // Runs a container.
3. docker ps // Shows all running containers.
4. docker logs container_id // Displays project logs.
5. docker image prune // Removes unused images.
6. docker service scale web-app=2 // Scales the web-app service to two replicas.
7. docker service update --image <new-image> service_name // Updates a Docker container's image without causing downtime.
Docker File Example :
1. Create a file named Dockerfile in the root directory of your backend project.
2. In this Dockerfile, write the following code:
# Use Node.js version 20 as the base image
FROM node:20
# Set the working directory inside the container
WORKDIR /node-practical
# Copy package.json and package-lock.json to the working directory
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy the entire project to the container
COPY . .
# Specify the command to run the application
CMD ["node", "index.js"]
3. Here’s an example of a docker-compose.yml file for a microservices architecture:
docker-compose.yml Example :
version: '3.9'
services:
db:
image: postgres:14-alpine
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: DBPass@123
POSTGRES_DB: DBNAME
POSTGRES_HOST_AUTH_METHOD: trust
gateway:
build:
dockerfile: Dockerfile
context: ./gateway
command: npm run start:prod
restart: always
ports:
- "5000:5000"
depends_on:
- db
environment:
JWT_SECRET: secret@123
JWT_EXPIRESIN: 2d
REDIS_HOST: localhost
REDIS_PORT: 6379
REDIS_DB: TestFinAssetMgmt //if use redis
volumes:
- /gateway/src/app/node_modules
auth:
build:
dockerfile: Dockerfile
context: ./auth
command: npm run start:prod
restart: always
ports:
- "5100:5100"
depends_on:
- db
environment:
DB_TYPE : postgres
DB_HOST : HOST_name
DB_PORT : 5432
DB_USERNAME : DBUSERNAME
DB_PASSWORD : DB PASS
DB_DATABASE : DBDATABASENAME
DB_SYNC : true
JWT_SECRET : secret@123
JWT_EXPIRESIN : 2d
RESET_PASSWORD_URL : http://3.15.153.226:3000
volumes:
- /auth/src/app/node_modules
mail:
build:
context: ./mail
command: npm run start:prod
restart: always
ports:
- "5200:5200"
depends_on:
- db
- auth
- gateway
environment:
EMAIL_HOST : smtp.gmail.com
EMAIL_USER : SMTP-email-pass
EMAIL_PASSWORD : smtp-password
volumes:
- /mail/src/app/node_modules
No comments:
Post a Comment