Learn how to configure the container port and the container entrypoint command and arguments.
When Knative serving starts a container, it runs the image's default
entrypoint command
and default command arguments. If you want to override the image's default
entrypoint and command arguments, you can use the command
and args
fields in
the container configuration. The command
field specifies the actual command
run by the container. The args
field specifies the arguments passed to that
command.
Configuring the container port
Any configuration change leads to the creation of a new revision. Subsequent revisions will also automatically get this configuration setting unless you make explicit updates to change it.
The container should listen on the port defined by the PORT
environment
variable rather than a specific hardcoded port.
However, if this is not possible, you can configure on which port requests are
sent to the container:
Console
Go to Knative serving in the Google Cloud console:
Click Create Service if you are configuring a new service you are deploying to. If you are configuring an existing service, click on the service, then click Edit & Deploy New Revision.
Under Advanced settings, click Container.
Specify the port you want requests to be sent to, if not the default value of
8080
. This also sets thePORT
environment variable.Click Next to continue to the next section.
In the Configure how this service is triggered section, select which connectivity you would like to use to invoke the service.
Click Create to deploy the image to Knative serving and wait for the deployment to finish.
Command line
For existing services, update a port setting by running the
gcloud run services update
command with the following parameters:gcloud run services update SERVICE --port PORT
Replace:
- SERVICE with the name of the service.
- PORT with the port to send requests to. Note that the
default port is
8080
.
For new services, set the port by running the
gcloud run deploy
command with the--port
parameter:gcloud run deploy SERVICE --image=IMAGE_URL --port PORT
Replace:
- SERVICE with the name of the service.
- IMAGE_URL with a reference to the container image, for
example,
gcr.io/myproject/my-image:latest
. - PORT with the port to which you want to send requests. The
default port is
8080
.
YAML
You can download the configuration of an existing service into a
YAML file with the gcloud run services describe
command by using the
--format=export
flag.
You can then modify that YAML file and deploy
those changes with the gcloud beta run services replace
command.
You must ensure that you modify only the specified attributes.
Download the configuration of your service into a file named
service.yaml
on local workspace:gcloud run services describe SERVICE --format export > service.yaml
Replace SERVICE with the name of your Knative serving service.
In your local file, update the
containerPort:
attribute:apiVersion: serving.knative.dev/v1 kind: Service spec: template: spec: containers: - image: IMAGE_URL ports: - containerPort: PORT
Replace
- IMAGE_URL with a reference to the container image, for
example,
gcr.io/myproject/my-image:latest
. - PORT with the port to which you want to send requests.
- IMAGE_URL with a reference to the container image, for
example,
Replace the service with its new configuration using the following command:
gcloud beta run services replace service.yaml
Configuring the container entrypoint command and arguments
Any configuration change leads to the creation of a new revision. Subsequent revisions will also automatically get this configuration setting unless you make explicit updates to change it.
When Knative serving starts a container, it runs the image's default
entrypoint command.
To specify or override the existing entrypoint command and arguments that are
defined in the container image, you can configure the command
and args
settings in the Knative serving container configuration.
You can choose to configure entrypoint commands, arguments, or both. The command that you specify in Knative serving overrides any entrypoint command that is defined in the container image. If you choose to specify only arguments, those arguments are passed to and run by the entrypoint command defined in the container image.
In Knative serving, you can configure entrypoint commands and arguments using the Google Cloud console, the Google Cloud CLI, or a YAML file when you deploy a new service, update an existing service, or deploy a revision:
Console
Go to Knative serving in the Google Cloud console:
Click Create Service if you are configuring a new service you are deploying to. If you are configuring an existing service, click on the service, then click Edit & Deploy New Revision.
Under Advanced settings, click Container.
Specify the entrypoint command and arguments that you want the container to run during startup.
Click Next to continue to the next section.
In the Configure how this service is triggered section, select which connectivity you would like to use to invoke the service.
Click Create to deploy the image to Knative serving and wait for the deployment to finish.
Command line
Command parameter options
-
To specify an argument that contains a comma (
,
), you must escape eachARG
with a different delimiter. For example, if you use@
:--args "^@^arg,with,commas@anotherarg@ARG3..."
-
To specify several sets of key-value pairs, you
can specify multiple parameters for readability. Example:
[...] --args "
ARG
1" \ --args "ARG
2" \ --args "ARG
3" -
To use equal signs (
=
) in your arguments, you must specify each argument using the following format:gcloud run services ... \ --args "--repo-allowlist=github.com/example/example_demo" \ --args "--gh-webhook-secret=XX"
For existing services, update the entrypoint command by running the
gcloud run services update
command with the following parameters:gcloud run services update SERVICE --command COMMAND --args ARG1,ARG2,ARG-N
Replace:
- SERVICE with the name of the service.
- Optional: COMMAND with the command that you want the container to run during startup.
- Optional: ARG1 with one or more arguments for the command that is run during startup. Use a comma delimited list for multiple arguments. How to format your arguments.
For new services, set the entrypoint command by running the
gcloud run deploy
command with the--command
parameter:gcloud run deploy SERVICE --image=IMAGE_URL --command COMMAND --args ARG1,ARG2,ARG-N
Replace:
- SERVICE with the name of the service.
- IMAGE_URL with a reference to the container image, for
example,
gcr.io/myproject/my-image:latest
. - Optional: COMMAND with the command that you want the container to run during startup.
- Optional: ARG1 with one or more arguments for the command that is run during startup. Use a comma delimited list for multiple arguments. How to format your arguments.
YAML
You can download the configuration of an existing service into a
YAML file with the gcloud run services describe
command by using the
--format=export
flag.
You can then modify that YAML file and deploy
those changes with the gcloud beta run services replace
command.
You must ensure that you modify only the specified attributes.
Download the configuration of your service into a file named
service.yaml
on local workspace:gcloud run services describe SERVICE --format export > service.yaml
Replace SERVICE with the name of your Knative serving service.
In your local file, update the
command
andargs
attributes:apiVersion: serving.knative.dev/v1 kind: Service spec: template: spec: containers: - image: IMAGE_URL command: - COMMAND args: - "ARG1" - "ARG-N"
Replace:
- IMAGE_URL with a reference to the container image, for
example,
gcr.io/myproject/my-image:latest
. - Optional: COMMAND with the command that you want the container to run during startup.
- Optional: ARG1 with one or more arguments for the command that is run during startup. Use a comma delimited list for more than one argument.
- IMAGE_URL with a reference to the container image, for
example,
Replace the service with its new configuration using the following command:
gcloud beta run services replace service.yaml