Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Evaluate bash expression in Dockerfile

I'm trying read application version from a file VERSION such that echo -n 1.0.0 > VERSION, and store the version number in an environment variable, lets say, VERSION. My Dockerfile

FROM debian
WORKDIR /app
COPY VERSION .
ENV VERSION $(cat VERSION)
# I'd like to use the version number in later steps like
RUN apt update && apt install -y curl
RUN curl path/to/executable-${VERSION}

env | grep VERSION returns:

VERSION=$(cat VERSION)

I want

VERSION=1.0.0
like image 276
Moazzem Hossen Avatar asked Mar 16 '26 03:03

Moazzem Hossen


1 Answers

ENV does not interpolate variables.

How about this:

FROM debian
WORKDIR /app
COPY VERSION version-file
RUN echo "export VERSION=$(cat version-file)" >> /root/.bashrc
RUN apt update && apt install -y curl
RUN curl path/to/executable-${VERSION}

This uses a RUN step to add an export command to .bashrc file. the export command adds the VERSION env var.

like image 195
ShayK Avatar answered Mar 18 '26 18:03

ShayK



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!