
docker:
VOLUME:
- <volume>
EXPOSE:
- <expose>
ENV:
<env_name>: <env_value>
LABEL:
<label_name>: <label_value>
ENTRYPOINT: <entrypoint>
CMD: <cmd>
WORKDIR: <workdir>
USER: <user>
HEALTHCHECK: <healthcheck>
Dockerfile instructions can be divided into two groups: build-time instructions and other instructions that effect on an image manifest. Build-time instructions do not make sense in a werf build process. Therefore, werf supports only following instructions:
USER
to set the user and the group to use when running the image (read more here).WORKDIR
to set the working directory (read more here).VOLUME
to add mount point (read more here).ENV
to set the environment variable (read more here).LABEL
to add metadata to an image (read more here).EXPOSE
to inform Docker that the container listens on the specified network ports at runtime (read more here)ENTRYPOINT
to configure a container that will run as an executable (read more here).CMD
to provide default arguments for theENTRYPOINT
to configure a container that will run as an executable (read more here).HEALTHCHECK
to tell Docker how to test a container to check that it is still working (read more here)
These instructions can be specified in the docker
config directive.
Here is an example of using docker instructions:
docker:
WORKDIR: /app
CMD: ['python', './index.py']
EXPOSE: '5000'
ENV:
TERM: xterm
LC_ALL: en_US.UTF-8
Defined docker instructions are applied on the last stage called docker_instructions
.
Thus, instructions do not affect other stages, ones just will be applied to a built image.
If need to use special environment variables in build-time of your application image, such as TERM
environment, you should use a base image with these variables.
Tip: you can also implement exporting environment variables right in user stage instructions