podman-compose v1.0.6 is the last to support Python3.6. When newer
podman-compose version is used with too old Python, podman-compose gives
only a confusing error. This commit gives a clear message to use
upgraded Python version.
A descriptive error can not be thrown, as line "from __future__ imports"
must occur at the beginning of the file, but older Python (older than
Python3.7) does not recognize __future__ and throws an error
immediately.
Therefore, a comment is used to inform the user to update his Python
version.
Signed-off-by: Monika Kairaityte <monika@kibit.lt>
This patch add 'x-podman.dns' option to the 'network' configuration,
allowing users to set the DNS resolvers for a defined network.
Signed-off-by: Rafael Guterres Jeffman <rjeffman@redhat.com>
Podman allows to create a network disabling the DNS plugin with
'--disable-dns', but this option is not available in the compose spec.
This patch add 'x-podman.disable-dns' to the podman-compose options,
allowing the creation of a network with the DNS plugin disabled.
Signed-off-by: Rafael Guterres Jeffman <rjeffman@redhat.com>
Also modifies an existing integration test to expect an empty string as `docker-compose` warns that
`ZZVAR3` is not set and defaults it to an empty string per the acutal output here.
```yaml
$ docker-compose -f container-compose.load-.env-in-project.yaml config
WARN[0000] The "ZZVAR3" variable is not set. Defaulting to a blank string.
name: project
services:
app:
command:
- /bin/busybox
- sh
- -c
- env | grep ZZ
environment:
ZZVAR1: This value is loaded but should be overwritten
ZZVAR2: This value is loaded from .env in project/ directory
ZZVAR3: ""
...
```
Signed-off-by: indra <indra.talip@gmail.com>
When using bridge mode, podman-compose will use the default `podman` network.
We do not need to create this network, so just return as other network_mode.
Signed-off-by: Songmin Li <lisongmin@protonmail.com>
The behavior has not changed, single-network has a special case.
Modified-by: Povilas Kanapickas <povilas@radix.lt>
Signed-off-by: Songmin Li <lisongmin@protonmail.com>
Note that multiple_nets is now guaranteed to be not empty in processing
stage.
Modified-by: Povilas Kanapickas <povilas@radix.lt>
Signed-off-by: Songmin Li <lisongmin@protonmail.com>
This commit takes into account that network_mode won't have networks
attribute set, accordingly get_net_args_from_network_mode() can
calculate complete net_args easily.
Modified-by: Povilas Kanapickas <povilas@radix.lt>
Signed-off-by: Songmin Li <lisongmin@protonmail.com>
"device_cgroup_rules: []" is defined in the Compose file specification,
and corresponds to "podman run --device-cgroup-rule="
Signed-off-by: Jeremy Visser <jeremy@visser.name>
When support for python3.8 and python3.9 has been dropped, it will be possible to eat the cak and
have it due to PEP-647.
Signed-off-by: legobt <6wbvkn0j@anonaddy.me>
This commit introduces the ability to substitute environment variables
within the 'environment' section of the service definition.
This allows for more dynamic configuration of services.
Signed-off-by: Songmin Li <lisongmin@protonmail.com>
The Compose Specification supports adding labels to the build image
which is also used in practice. Support this and pass the labels to
`podman build`.
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
docker-compose uses the path to the compose file even if it's symlink to
get the context directory.
Signed-off-by: Povilas Kanapickas <povilas@radix.lt>
This is the behavior exhibited by docker compose. The network names are
user-visible through external networks, so previously anyone who
migrated from docker-compose needed to change their configuration. Now
it is possible to select compatibility via a flag in x-podman global
dictionary.
Signed-off-by: Povilas Kanapickas <povilas@radix.lt>
This commit loads dotenv `.env` (exactly that name) from the following location (the later takes
precedence):
- The `.env` file in the Compose file's directory.
- The `.env` file in the current working directory (invoking podman-compose).
This preserves the behavior prior to 1.1.0 and to match with Docker Compose CLI.
Fix: https://github.com/containers/podman-compose/issues/937
Signed-off-by: Genzer <732937+Genzer@users.noreply.github.com>
Default command line argument `in_pod` was set to True, but this breaks
the compose file for users who want to use `--userns` argument. This
commit sets default `in_pod` value to None, and later resolves whether
to create a pod by checking compose file, as new argument in compose
file x-podman is now available. Now it is convenient for users to pass
custom `in_pod` value (True or False) as a compose file argument when
command line value of `in_pod` is not provided.
Signed-off-by: Monika Kairaityte <monika@kibit.lt>
Currently --in-pod handling is broken because the only way to set False
is by providing empty argument like "--in-pod=". As of Python 3.7 the
solution is to accept string and parse manually.
Co-authored-by: Randolph Sapp <res.sapp@gmail.com>
Signed-off-by: Povilas Kanapickas <povilas@radix.lt>
This corresponds to specifying the `z` or `Z` option in the third
portion of a terse mount specification (i.e. src:trg:z)
Signed-off-by: charliemirabile <46761267+charliemirabile@users.noreply.github.com>
Specifically:
- use "--network=foo" instead of "--network foo"
- specify "--network-alias" multiple times instead of concatenating values
Signed-off-by: Bas Zoetekouw <bas.zoetekouw@surf.nl>