anchor.diff:  ##<a id='requirements'></a>Requirements
   
   To push apps with Docker, you need the following:
  -
  + 
   * A Cloud Foundry deployment that has Docker support enabled. To enable Docker support, see the [Enable Docker](https://docs.cloudfoundry.org/adminguide/docker.html#enable) section of _Using Docker in Cloud Foundry_ in the Cloud Foundry documentation.
   
   * A Docker image that meets the following requirements:
  
positive.code: 
  <%= vars.app_runtime_abbr %> supports pushing apps from images hosted on Amazon Web Services ECR, which authenticates with temporary password tokens.
  
  To push an app as a Docker image from ECR:
  
  
  1. Run the following command to locate your AWS ECR credentials:
  
      ```
      aws ecr get-login --no-include-email
      ```
      The output of this command contains your AWS ECR password and username. Use these values for `AWS-ECR-PASSWORD` and `AWS-ECR-USERNAME` in the next step.
  
  2. Run the following command to push the app as a Docker image:
  
      ```
      $ CF_DOCKER_PASSWORD=AWS-ECR-PASSWORD cf push APP-NAME --docker-image REPO/IMAGE:TAG --docker-username AWS-ECR-USERNAME
      ```
  
      Where:
      - `AWS-ECR-PASSWORD`: The ECR password from the output of the previous command.
      - `AWS-ECR-USERNAME`: The ECR username from the output of the previous command. For example, `AWS`.
          - Setting `CF_DOCKER_PASSWORD` prepended to the `cf push --docker-image` makes the value temporary, which is more secure than setting the environment variable indefinitely with `export`.
      - `APP-NAME`: The name to give the pushed app on <%= vars.app_runtime_abbr %>.
      - `REPO`: The ECR repository that contains the image being pushed.
      - `IMAGE`: The name of the app image you are pushing.
      - `TAG`: (Optional, but recommended) The tag or version for the image.
  
  **How it Works**: Running `cf push` with an ECR registry triggers <%= vars.app_runtime_abbr %> to:
  
  
negative.code: 
  ## <a id='tag'></a>Benefits of Specifying Tags
  
  If you want your app container to be consistent after platform updates and code changes, specify a tag 
  when you push your Docker image. 
  Otherwise, the platform applies the <code>latest</code> tag without respecting changes to `PORT` or `ENTRYPOINT`.
  
  If you push your Docker image without specifying a tag, you must run `cf restage` for the changes to take effect.
  
  ## <a id='port_config'></a>Port Configuration
  
  By default, apps listen for connections on the port specified in the 
  [PORT](environment-variable.html#PORT) 
  environment variable for the app. Cloud Foundry allocates this value dynamically.
  
  When configuring a Docker image for Cloud Foundry, you can control the exposed port and 
  the corresponding value of `PORT` by specifying the 
  [EXPOSE](https://docs.docker.com/engine/reference/builder/#expose) directive in the image Dockerfile. 
  If you specify the `EXPOSE` directive, then the corresponding app pushed to Cloud Foundry listens on that 
  exposed port. For example, if you set `EXPOSE` to `7070`, then the app listens for connections on port 7070.
  
  If you do not specify a port in the `EXPOSE` directive, then the app listens on the value of the `PORT`
  environment variable as determined by Cloud Foundry.
   
  If you set the `PORT` environment variable via an `ENV` directive in a Dockerfile, Cloud Foundry overrides 
  the value with the system-determined value.
  
  Cloud Foundry supports only one exposed port on the image. 
  
  ## <a id='start_command'></a>Start Command
  
  