Ok there may be a small confusion about how env_file: and --env-file work so let's try to explain this in few steps
services:
db:
image: mysql:8.0
restart: always
env_file:
- .env.local
ports:
- 5432:5432
This will in fact mean, that you have following compose file
services:
db:
image: mysql:8.0
restart: always
environment:
- DATABASE_USERNAME=dummy
- DATABASE_PASSWORD=secret
- DATABASE_NAME=demo
- MYSQL_DATABASE=demo
- MYSQL_USER=dummy
- MYSQL_PASSWORD=secret
- MYSQL_ROOT_PASSWORD=supersecret
ports:
- 5432:5432
Which you may reiterate to
services:
db:
image: mysql:8.0
restart: always
environment:
- DATABASE_USERNAME=${USER_NAME}
- DATABASE_PASSWORD=${SECRET}
- DATABASE_NAME=${DB_NAME}
- MYSQL_DATABASE=${DB_NAME}
- MYSQL_USER=${USER_NAME}
- MYSQL_PASSWORD=${SECRET}
- MYSQL_ROOT_PASSWORD=${ROOT_PASS}
ports:
- 5432:5432
Prepare my_envs file like:
USER_NAME = dummy
SECRET = secret
DB_NAME = demo
ROOT_PASS = supersecret
And the use the podman-compose --env-file my_envs -f compose.yaml config which will "substitute" your variables inside the compose file.
podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.3.1
services:
db:
environment:
DATABASE_NAME: demo
DATABASE_PASSWORD: secret
DATABASE_USERNAME: dummy
MYSQL_DATABASE: demo
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: supersecret
MYSQL_USER: dummy
image: mysql:8.0
ports:
- 5432:5432
restart: always
Maybe this is what you are looking for?