The COMPOSE_PROJECT_NAME environment variable must override the
top-level name: attribute in the Compose file.
The precedence order is defined in the docker compose documentation
https://docs.docker.com/compose/how-tos/project-name/#set-a-project-name
Signed-off-by: Ruben Jenster <r.jenster@drachenfels.de>
the commit 38b13a3 ("Use asyncio for subprocess calls") broke the way
exit codes are reported from the podman compose build command.
The tasks are awaited as they finish which means that if a later build
finishes sucessfully after a failing build, it overwrites status.
Previously the `parse_return_code` function would skip updating the status
if the new return code was zero, but in removing it, this logic was not
carried forward.
Fixes: 38b13a3 ("Use asyncio for subprocess calls")
Signed-off-by: charliemirabile <46761267+charliemirabile@users.noreply.github.com>
When running 'podman-compose down <service>', if service is not part of
the compose, a KeyError exception is raised in function 'get_excluded'.
By only allowing evaluation of services that exist in the compose
provides a cleaner and gentler exit for this case.
Signed-off-by: Rafael Guterres Jeffman <rjeffman@redhat.com>
Added flake8 excludes to rules that are already ignored by the current
code to avoid validation issues with code that has already been
approved. Added pylint disable to line with lint offense already
accepted.
Signed-off-by: Italo Maia <italo.maia@gmail.com>
Allow setting an argument list as x-podman.pod_args to override the
default value `--infra=false --share=`. `--pod-args` passed on the command
line takes precedence over the value set in docker-compose.yml; the values
are not merged.
Fixes#1057.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
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>