So your app is ready, and now you want to containerize it using docker.If yes,then read on.
Docker file is a file which contains all commands that are required to generate an image.
Simple Docker file
Creating a Docker file.
In your project directory create a new file with the exact name Dockerfile.
Inside this file only we will have all the commands listed.Lets see what are those commands.
1. FROM
FROM <image>:<tag>
Dockerfile must start with FROM. This basically sets the base image.
# Example
FROM node:13-alpine
Instructed to get the base image of node with version 13.
2. LABEL
LABEL <key><value> <key2><value2>
Used to set metadata for the image.It is a key-value pair
# Example
LABEL companyname="xyz organization"
Sets companyname label.You can access it using docker inspect
3. RUN
RUN <command>
Executes command inside the new image and commits the results.
# Example
RUN mkdir -p /home/app
This will create a new directory inside the image
3. CMD
CMD [<command>,<command>]
The first commands to be executed after container is created.
# Example
CMD ["npm", "start"]
This will execute npm start
when container is created.
4. EXPOSE
EXPOSE <port>
Informs Docker that the container listens on the specified network ports.This information is used to interconnect containers using links and to set up port redirection on the host system
# Example
EXPOSE 3000
This will expose port inside the container as well as for host machine.
5. ENV
ENV <key><value>
Sets environment variables to the value .This is passed to all RUN
, CMD
instructions
# Example
ENV MONGO_DB_USERNAME=admin
Here MONGO_DB_USERNAME env is set to admin
6. COPY
COPY <source> <destination>
Copies files from source i.e the host into image.All new files & directories are created with mode 0755.
# Example
COPY ./package.json /home/app
Here package.json file is being copied from current directory to /home/app in image.
7. ADD
ADD <source> <destination>
Same as copy but some slight change.
- The ADD instruction can copy and extract TAR files from the Docker host to the Docker image.
# Example
ADD unzipthis.tar /home/app
This will extract files inside the image to the specified directory.
8. VOLUME
VOLUME <path>
Used for persistence inside docker images.This instruction can create a directory inside the docker image, which can later be mounted to a directory
# Example
VOLUME /data
9. WORKDIR
WORKDIR <path>
Instruction specifies what the working directory should be inside the Docker image
# Example
WORKDIR /home/app
This will the directory where the RUN or other instruction will be executed.
Now try Reading this dockerfile again
Hope this will make writing Dockerfile easier for you.
Top comments (0)