Home > front end >  Auto Updating the hosts files and the files past to the container synchronously Dockerfile
Auto Updating the hosts files and the files past to the container synchronously Dockerfile

Time:09-06

This is a concept question relating to images and containers. So I have have a python 3.9 image on ubuntu. I have a main.py which will altered and rewritten. However I see that when I change the contents of the main.py from my host computer's files the main.py within the container will not be one to one as the contents of the main.py file will not change unless I change it within the container itself.

Is there a way to have it so that when there is an update on the host computer the files within the container will also pull the latest updates so the files would be one to one? I obviously want to alter the main.py from my host computer as the if I did the vice versa the container changes wouldn't be seeable outside it.

Host Computer:

.
├── files/
│   ├── main.py
│   └── text.csv
└── Dockerfile

Container Directory:

test-poetry/
├─tests/
│ └─__init__.py
├─README.md
├─pyproject.toml
├─test_poetry/
│ ├─__init__.py
│ ├─main.py
│ └─text.csv
└─poetry.lock

Docker Contents:

#Python - 3.9 - ubuntu 
FROM python:3.9-slim
ENTRYPOINT [ "/bin/bash" ]
WORKDIR /src/test-poetry/test_poetry
COPY files . 

CodePudding user response:

You need to use files as a container volume.

Dockerfile:

FROM python:3.9-slim

# makes no sense to have this as a long path
WORKDIR /project

# keep this towards the end of the file for clarity
ENTRYPOINT [ "/bin/bash" ]

Then build the image and run your container with:

docker build -t test/poetry:0.1 .

docker container run --rm -ti -v $(pwd)/files:/project test/poetry:0.1

** NOTE **

For your purposes you can even skip the build completely and run a simple container like:

docker run \
  --rm -ti \
  -v $(pwd)/files:/project \
  --workdir /project \
  python:3.9-slim bash 
  • Related