In this article, we will go through how to deploy a nest app to dockerhub. The prerequisites needed are a dockerhub account and having docker and docker compose locally installed. We will be using this project as our starting point
1. Clone the application.
Navigate into your desired folder and clone the app using the following commands
cd Desktop git clone https://github.com/manulangat1/nest-bookmark-api
Once done, navigate into the cloned project
2. Adding a docker file.
A docker file is a text document that contains all the commands that will be used to build a docker image. At the root of your project, create a new file Dockerfile
We can now start adding our commands.
FROM node:13-alphine # this is the base image that our docker image will be based on WORKDIR /usr/src/app # this sets the working directory on our docker container COPY package*.json . #this command copies the package.json and package-lock.json from our host to the docker container RUN npm install # this installs all the packages defined in our package.json file. EXPOSE 3000 # exposes the port on our container COPY . . #copies everything from our host to our docker container CMD [ "npm" , "start:dev"] # this is the entry point of our application
3. Setting up our docker-compose file.
At the root of the project, create a new file called
We can now proceed to add our docker-compose commands. Note that we will not spin up and database for this part, a more detailed post on docker-compose is in the works.
services:'3' # this tells the version of docker-compose that we are using. dev-api: #this is the name of our container build: . This tells docker-compose to look for the Dockerfile at the root (path where Dockerfile lives) environment: ports: # this binds the port on our local machine to our docker container - "3000:3000" volumes: # creating a volume enables us to have a way of persisting our data. More about this soon. (we are using a named volume here) - db-data:/var/lib/postgresql/data restart: always # tells the behaviour of our application once the docker container fails
4. Fire up our docker container.
Moment of truth, we are going to fire up our container using the command:
docker-compose up dev-api -d
-d tells the container to run in a detached mode.
To confirm whether our container is running, use the command below:
and your output should be in the form of :
To check the logs of the container run
docker logs $container_id
To enter into our docker container use the following command.
docker exec -it $container_id /bin/sh
###. 5 Deploy to dockerhub.
To deploy this image to docker hub, we have to run the following commands.
docker build -t node-nest:ndj-1.0 docker login docker push node-nest:ndj-1.0
We have successfully dockerized and deployed our application to Dockerhub.
Follow for more articles on Docker, Jenkins, AWS and DevOps in general.