David's Blog

Introduction to docker with express

By David Li on Monday, 15 Feb 2023 13:00:00 GMT

See my previous post on Getting started with nodejs and express

Docker is a popular platform for building, deploying, and running applications in containers. A container is a lightweight, standalone, and executable package of an application that includes everything the application needs to run, such as the code, libraries, and dependencies.

Containers provide a number of benefits over traditional approaches to building and deploying applications, such as virtual machines. Some of the key benefits of using Docker and containers include:

  • Portability: Containers are isolated from the host system and can run on any machine that has Docker installed, regardless of the host operating system or system configuration. This makes it easy to deploy and run applications on different environments, such as local development, staging, and production.

  • Consistency: Containers provide a consistent and predictable runtime environment for applications, which helps to ensure that applications will behave the same way no matter where they are deployed. This can reduce the time and effort required to troubleshoot issues and ensure that applications are working as expected.

  • Scalability: Containers are lightweight and can be easily scaled up or down to meet the changing needs of an application. This makes it easy to manage the resources that an application uses, and allows applications to be quickly and easily adapted to handle changes in workload or traffic.

  • Efficiency: Containers use less resources than traditional virtual machines, which makes it possible to run more applications on the same hardware. This can help to reduce the cost and complexity of running and managing applications, and can improve the overall efficiency of an application’s infrastructure.

In summary, Docker is a platform for building, deploying, and running applications in containers. Containers provide a number of benefits over traditional approaches, such as portability, consistency, scalability, and efficiency. This makes Docker a useful tool for building and deploying modern applications.

Here is an example of a Dockerfile that can be used to create a Docker image for a simple Express server:


Copy code
# Use the official Node.js 10 LTS image as the base image
FROM node:10-lts

# Create a directory for the application
RUN mkdir -p /usr/src/app

# Set the working directory to the application directory
WORKDIR /usr/src/app

# Copy the package.json and package-lock.json files to the working directory
COPY package*.json ./

# Install the dependencies
RUN npm install

# Copy the application source code to the working directory
COPY . .

# Expose port 3000 so it can be accessed from the outside
EXPOSE 3000

# Start the Express server when the container is started
CMD ["npm", "start"]

Your file directory should look like

In this Dockerfile, the official Node.js 10 LTS image is used as the base image. The package.json and package-lock.json files are copied to the working directory and the dependencies are installed using npm. The application source code is then copied to the working directory, and port 3000 is exposed so it can be accessed from the outside. Finally, the npm start command is specified as the default command for the container, which will start the Express server when the container is started.

To build a Docker image using this Dockerfile, you can run the following command from the directory where the Dockerfile is located:

docker build -t my-express-app .

This will build a Docker image with the name my-express-app using the instructions in the Dockerfile. You can then run the image as a Docker container using the following command:

docker run -p 3000:3000 my-express-app

This will start a Docker container based on the my-express-app image, and will map port 3000 on the host to port 3000 in the container. The Express server will start automatically when the container is started, and you will be able to access the server at http://localhost:3000.

References

This content came from a book I generated using chatGPT and a lot of editing.

View on the source material see amazon https://www.amazon.com/dp/B0BSL14M71

For a free copy, please view https://friendlyuser.github.io/assets/pdfs/introToJs.pdf

© Copyright 2024 by FriendlyUsers Tech Blog. Built with ♥ by FriendlyUser. Last updated on 2024-04-15.