I'm writing as docker-compose
file to up MySQL instance and want to use few variable from env file: here are the files actually look like:
docker-compose.yml
version: '3.3'
services:
db:
image: mysql
restart: always
env_file:
- ./imran.env
environment:
MYSQL_ROOT_PASSWORD: ${PASS}
ports:
- ${PORT1}: ${PORT2}
imran.env
PASS=imran123
PORT1=3306
PORT2=3306
Instead of working correct i'm getting following errors:
WARNING: The PASS variable is not set. Defaulting to a blank string.
WARNING: The PORT2 variable is not set. Defaulting to a blank string.
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.db.ports contains unsupported option: '${PORT1}
Please Help
You have some issues in your docker-compose.yaml
file:
A:
A space
symbol between ports values. It should be without a space:
ports:
- ${PORT1}:${PORT2}
B:
You need to use .env file in folder where docker-compose.yaml
is in order to declaring default environment variables for both docker-compose.yaml
file and docker container. env_file
section is used to put values into container only.
So, you should do the following:
1.
Re-name file with ENV variables to .env
:
mv imran.env .env
2.
Use the following docker-compose.yaml
after:
version: '3.3'
services:
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${PASS}
ports:
- ${PORT1}:${PORT2}