I am trying to run a container. I already have the image uploaded to private Docker registry. I want to write a compose file to download and deploy the image. But I want to pass the TAG name as a variable from the docker-compose run command.My compose file looks like below. How can I pass the value for KB_DB_TAG_VERSION as part of docker-compose up command?
version: '3'
services:
db:
#build: k-db
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: k-db
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
image: XX:$KB_DB_TAG_VERSION
image: k-db
ports:
- "3307:3306"
You have two options (option 2.
overrides 1.
):
Create the .env file as already suggested in another answer.
Prepend KEY=VALUE
pair(s) to your docker-compose
command, e.g:
KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0 docker-compose up
Exporting it earlier in a script should also work, e.g.:
export KB_DB_TAG_VERSION=kb-1.3.20-v1.0.0
docker-compose up
Keep in mind that these options just pass an environment varible to the docker-compose.yml
file, not to a container. For an environment variable to be actually passed to a container you always need something like this in your docker-compose.yml
:
environment:
- KB_DB_TAG_VERSION=$KB_DB_TAG_VERSION