containers / containers/podlet

Create own "default" network from compose files

Open
#190 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
1.6k
Forks
48
Avg merge
1d 9h
Merged PRs (30d)
1

Description

## Current behavior

This simple compose file:

```yaml
services:
proxy:
image: emilymclean/http-simple-proxy
environment:
- FORWARD_HOST=whoami
- FORWARD_PORT=2001
ports:
- "8080:80"
whoami:
image: traefik/whoami
command:
- --port=2001
```

creates with `podman-compose` an extra network:

```bash
podman-compose up -d
tmp-compose_simple_proxy_1
tmp-compose_whoami_1

podman network ls
NETWORK ID NAME DRIVER
2f259bab93aa podman bridge
a3450c0cf286 tmp-compose_default bridge # the folder where the compose file is located is called tmp-compose

podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b2d061f5d34 docker.io/emilymclean/http-simple-proxy:latest nginx -g daemon o... 47 seconds ago Up 47 seconds 0.0.0.0:8080->80/tcp tmp-compose_simple_proxy_1
dced843f9f4c docker.io/traefik/whoami:latest --port=2001 47 seconds ago Up 47 seconds 80/tcp tmp-compose_whoami_1

podman inspect tmp-compose_simple_proxy_1 --format "{{.NetworkSettings.Networks}}"
map[tmp-compose_default:0xc000181b00]

podman inspect tmp-compose_whoami_1 --format "{{.NetworkSettings.Networks}}"
map[tmp-compose_default:0xc00026f9e0]
```

Even there is no `networks` section in the compose file. This is the default behavior of Docker compose as far as I understand from https://docs.docker.com/reference/compose-file/networks/#the-default-network:

> When a Compose file doesn't declare explicit networks, Compose uses an implicit `default` network. Services without an explicit [networks](https://docs.docker.com/reference/compose-file/services/#networks) declaration are connected by Compose to this default `network`

Well the naming is different in `podman-compose` but should not matter.

Creating quadlets with `podlet` does not create any networks:

```bash
mkdir quadlet
podlet --file quadlet compose
Wrote to file: quadlet/simple_proxy.container
Wrote to file: quadlet/whoami.container

cat quadlet/*
[Container]
Environment=FORWARD_HOST=whoami FORWARD_PORT=2001
Image=emilymclean/http-simple-proxy
PublishPort=8080:80
[Container]
Exec='--port=2001'
Image=traefik/whoami
```

## Expected behavior

I would expect that it also creates a network quadlet and links the 2 containers to it:

```bash
podlet --file quadlet compose
Wrote to file: quadlet/simple_proxy.container
Wrote to file: quadlet/whoami.container
Wrote to file: quadlet/fancy_network_name.network

cat quadlet/simple_proxy.container
[Unit]
After=fancy_network_name.network
Requires=fancy_network_name.network

[Container]
Environment=FORWARD_HOST=whoami FORWARD_PORT=2001
Image=emilymclean/http-simple-proxy
PublishPort=8080:80
Network=fancy_network_name

cat quadlet/whoami.container
[Unit]
After=fancy_network_name.network
Requires=fancy_network_name.network

[Container]
Exec='--port=2001'
Image=traefik/whoami
Network=fancy_network_name

cat quadlet/fancy_network_name.network
[Network]
NetworkName=fancy_network_name
```

## Version

Installed with cargo.

```bash
podlet --version
podlet 0.3.1

which podlet
~/.cargo/bin/podlet
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.