shantanuo
shantanuo

Reputation: 32316

Modify a line before starting the container

I used the following command to build a docker image

docker build -t shantanuo/mydash .

And the dockerfile is:

FROM continuumio/miniconda3
EXPOSE 8050
RUN cd /tmp/
RUN apt-get update
RUN apt-get install --yes git zip vim
RUN git clone https://github.com/kanishkan91/SuperTrendfor50Stocks.git
RUN pip install -r SuperTrendfor50Stocks/requirements.txt
WORKDIR SuperTrendfor50Stocks/

I can start the container, modify the application file and then start the app.

Step 1:

docker run -p 8050:8050 -it shantanuo/mydash bash

Step 2:

vi application.py

Change the last line

application.run_server(debug=True)

application.run(host='0.0.0.0')

Step 3:

python application.py

Can I avoid these 3 steps and merge everything in my dockerfile?

Upvotes: 0

Views: 68

Answers (1)

Adiii
Adiii

Reputation: 59946

I do not think this is a good approach to change the line of code and then run the application manually, why not the code is self generic and modify the behaviour of application accordingly base on ENV.

You can try

# set default value accordingly
app.run(host=os.getenv('HOST', "127.0.0.1") , debug=os.getenv('DEBUG', False))

Now you can change that behaviour base on ENV.

web:
  build: ./web
  environment:
    - HOST=0.0.0.0
    - DEBUG=True

or

docker run -p 8050:8050 -e HOST="0.0.0.0" e DEBUG=True -it shantanuo/mydash

You also need to set CMD in the Dockerfile

CMD python app.py

Upvotes: 2

Related Questions