---
title: Additional setup
description: This page covers setup tasks that you'll need to perform before you can develop custom Docker images for the Ping Identity Platform. Complete all of the tasks on this page before proceeding.
component: forgeops
version: 7.4
page_id: forgeops::cdk/develop/setup
canonical_url: https://docs.pingidentity.com/forgeops/7.4/cdk/develop/setup.html
keywords: ["CDK", "Mikikube", "GKE", "EKS", "AKS"]
section_ids:
  docker-push: Set up your environment to push to your Docker registry
  push-to: Identify the Docker repository to push to
  deploy-env-init: Initialize deployment environments
  next_step: Next step
---

# Additional setup

This page covers setup tasks that you'll need to perform before you can develop custom Docker images for the Ping Identity Platform. Complete all of the tasks on this page before proceeding.

## Set up your environment to push to your Docker registry

> **Collapse: Minikube**
>
> Set up your local environment to execute docker commands on Minikube's Docker engine.
>
> ForgeRock recommends using the built-in Docker engine when developing custom Docker images using Minikube. When you use Minikube's Docker engine, you don't have to build Docker images on a local engine and then push the images to a local or cloud-based Docker registry. Instead, you build images using the same Docker engine that Minikube uses. This streamlines development.
>
> To set up your local computer to use Minikube's Docker engine, run the docker-env command in your shell:
>
> ```
> $ eval $(minikube docker-env)
> ```
>
> For more information about using Minikube's built-in Docker engine, see [Use local images by re-using the Docker daemon](https://kubernetes.io/docs/setup/learning-environment/minikube/#use-local-images-by-re-using-the-docker-daemon) in the Minikube documentation.

> **Collapse: GKE shared cluster**
>
> To set up your local computer to build and push Docker images:
>
> 1. If it's not already running, start Docker on your local computer. For more information, refer to the Docker documentation.
>
> 2. Set up a Docker credential helper:
>
>    ```
>    $ gcloud auth configure-docker
>    ```

> **Collapse: EKS shared cluster**
>
> To set up your local computer to push Docker images:
>
> 1. If it's not already running, start Docker on your local computer. For more information, refer to the Docker documentation.
>
> 2. Log in to Amazon ECR. Use the Docker registry location you [obtained from your cluster administrator](../cloud/setup/eks/clusterinfo.html):
>
>    ```
>    $ aws ecr get-login-password | \
>     docker login --username AWS --password-stdin my-docker-registry
>    Login Succeeded
>    ```
>
>    ECR login sessions expire after 12 hours. Because of this, you'll need to perform these steps again whenever your login session expires.\[[1](#_footnotedef_1 "View footnote.")]

> **Collapse: AKS shared cluster**
>
> To set up your local computer to push Docker images:
>
> 1. If it's not already running, start Docker on your local computer. For more information, refer to the Docker documentation.
>
> 2. Install the [ACR Docker Credential Helper](https://github.com/Azure/acr-docker-credential-helper).

## Identify the Docker repository to push to

When you execute the forgeops build command, specify the repository to push your Docker image to with the --push-to argument.

Note that the forgeops build command appends a component name to the destination repository. For example, the command forgeops build am --push-to us-docker.pkg.dev/my-project pushes a Docker image to the `us-docker.pkg.dev/my-project/am` repository.

To determine how to specify the --push-to argument:

> **Collapse: Minikube**
>
> Specify --push-to none with the forgeops build command to push the Docker image to the Docker registry embedded in the Minikube cluster.

> **Collapse: GKE shared cluster**
>
> Set the --push-to argument to the GCR repository that you [obtained from your cluster administrator](../cloud/setup/gke/clusterinfo.html).
>
> After it builds the Docker image, the forgeops build command pushes the Docker image to this repository.

> **Collapse: EKS shared cluster**
>
> Set the --push-to argument to the Amazon ECR repository that you [obtained from your cluster administrator](../cloud/setup/eks/clusterinfo.html).
>
> After it builds the Docker image, the forgeops build command pushes the Docker image to this repository.

> **Collapse: AKS shared cluster**
>
> Set the --push-to argument to the ACR repository that you [obtained from your cluster administrator](../cloud/setup/aks/clusterinfo.html).
>
> After it builds the Docker image, the forgeops build command pushes the Docker image to this repository.

## Initialize deployment environments

Deployment environments let you manage deployment manifests and image defaulters for multiple environments in a single `forgeops` repository clone.

By default, the forgeops build command updates the image defaulter in the kustomize/deploy directory.

When you specify a deployment environment, the forgeops build command updates the image defaulter in the kustomize/deploy-environment directory. For example, if you ran forgeops build --deploy-env production, the image defaulter in the kustomize/deploy-production/image-defaulter directory would be updated.

Before you can use a new deployment environment, you must initialize a directory based on the /path/to/forgeops/kustomize/deploy directory to support the deployment environment. Perform these steps to initialize a new deployment environment:

```
$ cd /path/to/forgeops/bin
$ ./forgeops clean
$ cd ../kustomize
$ cp -rp deploy deploy-my-environment
```

|   |                                                                                                                         |
| - | ----------------------------------------------------------------------------------------------------------------------- |
|   | If you need multiple deployment environments, you'll need to initialize each environment before you can start using it. |

## Next step

* [icon: check-square-o, set=fa][Perform additional setup](#)

* [icon: square-o, set=fa]*[Understand custom images](custom-images.html)*

* [icon: square-o, set=fa][Understand types of configuration](fr-data.html)

* [icon: square-o, set=fa][Understand property value substitution](value-substitution.html)

* [icon: square-o, set=fa][Customize the AM image](am.html)

* [icon: square-o, set=fa][Customize the IDM image](idm.html)

***

[1](#_footnoteref_1). You can automate logging into ECR every 12 hours by using the `cron` utility.
