Skip to content

Commit

Permalink
Merge pull request #3665 from QiWang19/env
Browse files Browse the repository at this point in the history
Set -env variables as appropriate
  • Loading branch information
openshift-merge-robot authored Jul 30, 2019
2 parents 1a00895 + 2da86bd commit e84ed3c
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 6 deletions.
5 changes: 3 additions & 2 deletions cmd/podman/shared/parse/parse.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,9 @@ func parseEnv(env map[string]string, line string) error {
}
} else {
// if only a pass-through variable is given, clean it up.
val, _ := os.LookupEnv(name)
env[name] = val
if val, ok := os.LookupEnv(name); ok {
env[name] = val
}
}
}
return nil
Expand Down
17 changes: 15 additions & 2 deletions docs/podman-create.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,9 +253,9 @@ You need to specify multi option commands in the form of a json string.

Set environment variables

This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". If you specify a environment variable ending in --*--, podman will search the host environment for variables starting with the prefix and add them to the container. If you want to add an environment variable with a ***** following it, then you need to set a value.
This option allows arbitrary environment variables that are available for the process to be launched inside of the container. If an environment variable is specified without a value, Podman will check the host environment for a value and set the variable only if it is set on the host. If an environment variable ending in __*__ is specified, Podman will search the host environment for variables starting with the prefix and will add those variables to the container. If an environment variable with a trailing ***** is specified, then a value must be supplied.

See **Environment** note below for precedence.
See [**Environment**](#environment) note below for precedence and examples.

**--env-host**=*true|false*

Expand Down Expand Up @@ -933,6 +933,19 @@ Precedence Order:

**--env** : Any environment variables specified will override previous settings.

Create containers and set the environment ending with a __*__ and a *****

```
$ export ENV1=a
$ podman create --name ctr --env ENV* alpine printenv ENV1
$ podman start --attach ctr
a
$ podman create --name ctr --env ENV*****=b alpine printenv ENV*****
$ podman start --attach ctr
b
```

## FILES

**/etc/subuid**
Expand Down
15 changes: 13 additions & 2 deletions docs/podman-run.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,9 +260,9 @@ You need to specify multi option commands in the form of a json string.

Set environment variables

This option allows you to specify arbitrary environment variables that are available for the process that will be launched inside of the container. If you specify a environment variable without a value, podman will check the host environment for a value or set the environment to "". If you specify a environment variable ending in --*--, podman will search the host environment for variables starting with the prefix and add them to the container. If you want to add an environment variable with a ***** following it, then you need to set a value.
This option allows arbitrary environment variables that are available for the process to be launched inside of the container. If an environment variable is specified without a value, Podman will check the host environment for a value and set the variable only if it is set on the host. If an environment variable ending in __*__ is specified, Podman will search the host environment for variables starting with the prefix and will add those variables to the container. If an environment variable with a trailing ***** is specified, then a value must be supplied.

See **Environment** note below for precedence.
See [**Environment**](#environment) note below for precedence and examples.

**--env-host**=*true|false*

Expand Down Expand Up @@ -1219,6 +1219,17 @@ Precedence Order:

**--env** : Any environment variables specified will override previous settings.

Run containers and set the environment ending with a __*__ and a *****

```
$ export ENV1=a
$ $ podman run --env ENV* alpine printenv ENV1
a
$ podman run --env ENV*****=b alpine printenv ENV*****
b
```

## FILES

**/etc/subuid**
Expand Down
5 changes: 5 additions & 0 deletions test/e2e/run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,11 @@ var _ = Describe("Podman run", func() {
Expect(match).Should(BeTrue())
os.Unsetenv("FOO")

session = podmanTest.Podman([]string{"run", "--rm", "--env", "FOO", ALPINE, "printenv", "FOO"})
session.WaitWithDefaultTimeout()
Expect(len(session.OutputToString())).To(Equal(0))
Expect(session.ExitCode()).To(Equal(1))

session = podmanTest.Podman([]string{"run", "--rm", ALPINE, "printenv"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
Expand Down

0 comments on commit e84ed3c

Please sign in to comment.