> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flexagon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# dockerBuildImage

> This operation builds an image from a docker file. It will not create or start a container. This operation uses Docker CLI, it requires the docker exe

This operation builds an image from a docker file.  It will not create or start a container. This operation uses Docker CLI, it requires the docker executable to be on the path of the docker endpoint.

# Target Properties

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Property Name**</th><th>**Property Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>Docker Unix Socket</td><td>`FDDKR_UNIX_SOCKET`</td><td>No</td><td>The socket the Docker daemon listens on. Required if Docker Server and Docker Port are not set. Default value is \[/var/run/docker.sock]</td></tr><tr><td>Docker Server Address</td><td>`FDDKR_DOCKER_SERVER`</td><td>No</td><td>The IP address of the Docker server.  Required if Docker Unix Socker is not set.</td></tr><tr><td>Docker Port</td><td>`FDDKR_DOCKER_PORT`</td><td>No</td><td>The port the Docker service is listening on.  Required if Docker Unix Socker is not set.</td></tr><tr><td>Docker Registry Account</td><td>`FDDKR_REGISTRY_ACCOUNT_CODE`</td><td>No</td><td>The Docker Registry account to use. Required when we want to push the image or the base image mentioned in the Docker file residing in a remote registry and require login to pull the image. The plugin input `FDDKR_INP_REGISTRY_ACCOUNT_CODE` takes precedence over this property.Please refer to the link to set up the Docker Registry Account: [Docker Registry Setup For Cloud Providers](https://docs.flexagon.com/flexdeploy-10-0-documentation/flexdeploy-plugin-guides/flexdeploy-docker-plugin-guide/docker-plugin-appendix/docker-registry-setup-for-cloud-providers.md)</td></tr></tbody></table>

# Project Properties

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Property Name**</th><th>**Property Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>Docker Repository Name</td><td>`FDDKR_IMAGE_NAME`</td><td>No</td><td>Provide docker repository name with optional namespace. i.e. foo/bar or bar. The plugin input `FDDKR_INP_IMAGE_NAME` takes precedence over this property.</td></tr><tr><td>Docker Image Tag</td><td>`FDDKR_IMAGE_TAG`</td><td>No</td><td>Provide tag to apply to the built image. Use comma-separated values to specify multiple tags. For example: 1.0,2.0,3.0 . The plugin input `FDDKR_INP_IMAGE_TAG` takes precedence over this property.</td></tr></tbody></table>

# Inputs

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Input Name**</th><th>**Input Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>Docker File</td><td>`FDDKR_INP_DOCKER_FILE`</td><td>No</td><td>The path to the Docker File to build. If empty Dockerfile is used as the name, and it is searched as specified in the next line.If an absolute path is given, it is used. Otherwise, the file is checked for relative to the FD\_TEMP\_DIR and any checkout folders.</td></tr><tr><td>Docker File Arguments</td><td>`FDDKR_INP_DOCKER_FILE_ARGS`</td><td>No</td><td>The docker file arguments to use. These are the ARG instructions in the docker file.  KeyValue pairs should be separated by "|" and the key and value should be separated by ",".  Example: key1,value|key2,value|key3,valueEscape commas in values with backslashes. ,</td></tr><tr><td>Build Context</td><td>`FDDKR_INP_BUILD_CONTEXT`</td><td>No</td><td>You can pass the relative or absolute path to a local directory as the context for a build.</td></tr><tr><td>Docker Repository Name</td><td>`FDDKR_INP_IMAGE_NAME`</td><td>No</td><td>Provide docker repository name with optional namespace. i.e. foo/bar or bar. This input will take priority over the `FDDKR_IMAGE_NAME` project property.Note: If `FDDKR_IMAGE_NAME` or `FDDKR_INP_IMAGE_NAME` is specified with preceding “**/**”, then the registry address from `FDDKR_REGISTRY_ACCOUNT_CODE or FDDKR_INP_REGISTRY_ACCOUNT_CODE` will get auto prepended to form the full image name.***Example**: *`FDDKR_INP_IMAGE_NAME`*=/nginximage and registry address corresponding to the *`FDDKR_REGISTRY_ACCOUNT_CODE`* is *[*898334.dkr.ecr.us-east-1.amazonaws.com*](http://898334718399.dkr.ecr.us-east-1.amazonaws.com/)*, then plugin will consider the image name as *[*898334.dkr.ecr.us-east-1.amazonaws.com*](http://898334718399.dkr.ecr.us-east-1.amazonaws.com/)*/nginximage.*</td></tr><tr><td>Image Tag</td><td>`FDDKR_INP_IMAGE_TAG`</td><td>No</td><td>Provide tag to apply to the built image. Use comma-separated values to specify multiple tags. For example: 1.0,2.0,3.0 . This input will take priority over the `FDDKR_IMAGE_TAG` project property.</td></tr><tr><td>Docker Registry Account</td><td>`FDDKR_INP_REGISTRY_ACCOUNT_CODE`</td><td>No</td><td>The Docker Registry account to use. Required when we want to push the image or the base image mentioned in the Docker file residing in a remote registry and require login to pull the image. There are a couple different spots to specify this for convenience.In order of precedence:<ul><li>This plugin input</li><li>Target Property</li></ul>Please refer to the link to set up the Docker Registry Account: [Docker Registry Setup For Cloud Providers](https://docs.flexagon.com/flexdeploy-10-0-documentation/flexdeploy-plugin-guides/flexdeploy-docker-plugin-guide/docker-plugin-appendix/docker-registry-setup-for-cloud-providers.md)</td></tr><tr><td>Push Image to repository</td><td>`FDDKR_INP_PUSH_IMAGE`</td><td>No</td><td>Push Image to configured Registry.</td></tr><tr><td>Tag Image with latest tag</td><td>`FDDKR_INP_TAG_LATEST`</td><td>No</td><td>Check to tag built image with 'latest' tag.</td></tr><tr><td>Additional Options</td><td>`FDDKR_INP_ADDITIONAL_PARAMS`</td><td>No</td><td>Add any additional options not listed above, which will be added to the build command. e.g. --cpu-period=100000 --cpu-quota=150000</td></tr></tbody></table>

# Outputs

<table><colgroup><col /><col /></colgroup><tbody><tr><th>**Output Name**</th><th>**Description**</th></tr><tr><td>`FD_BUILT_DOCKER_IMAGE_ID`</td><td>The image id that was created from the operation.  The IMAGE\_ID column when running the command 'docker images'. This output will always be made available to the deploy workflow.</td></tr><tr><td>`FD_BUILT_DOCKER_IMAGE_NAME`</td><td>The built docker image name. The IMAGE\_NAME column when running the command ‘docker images'. This output will always be made available to the deploy workflow.</td></tr><tr><td>`FD_BUILT_DOCKER_IMAGE_TAG`</td><td>The tag of the built image. This output will always be made available to the deploy workflow.</td></tr><tr><td>`FD_BUILT_DOCKER_IMAGE`</td><td>The built docker image. This output will always be made available to the deploy workflow.</td></tr><tr><td>`FD_BUILT_DOCKER_LINK`</td><td>The link to the built docker image when pushed to a repository. This output will always be made available to the deploy workflow.</td></tr></tbody></table>

# Artifacts

This operation consumes a Dockerfile from the artifacts repository.  Can also be overridden through the docker file input.

# Endpoint Selection

This operation delegates the selection to the workflow developer to determine.

# Endpoint Execution

This operations delegates the execution to the workflow developer to decide.

# Special Considerations

#### Docker Repository Required?

The 'Docker Repository' input is not required to build the image but in order to make use of other docker functionality, like pushing to a registry, you need to specify a repository.  If you forgot to specify a repository on build you can tag the image from the command line at any point.

**docker tag %ImageId% %RepoName%:%tagName%**

To tag the image you can also use [dockerTagImage](https://docs.flexagon.com/flexdeploy-10-0-documentation/flexdeploy-plugin-guides/flexdeploy-docker-plugin-guide/dockertagimage.md) operation.
