28
submitted 7 months ago* (last edited 7 months ago) by Loulou@lemmy.mindoki.com to c/asklemmy@lemmy.world

Hello all!

Can you mount any folder a docker image is running in?

So for example, if I have a python script creating a file "./hello.txt", it would be written in the folder where I launch "docker-compose up" ?

I have figured out how to write the hello.txt to a subfolder like /data/ (by mapping an image-local folder to /data/), but I'd like to use like ./ for the image itself instead. So that the folder I'm launching the docker-compose in on my PC is mapped to ./ in the image, if that makes more sense.

So this works (in the compose.yml):

volumes:

  - ./:/data

but the script must write to "./data/hello.txt"

This doesn't work:

volumes:

  - ./:./

It pops an error: mount path must be absolute

Any idea if this is even possible?

Cheers and thanks !

you are viewing a single comment's thread
view the rest of the comments
[-] phorq@lemmy.ml 2 points 7 months ago* (last edited 7 months ago)

If the script is working like that it implies that your working_dir is / inside the container, hence why your python script can write to ./data instead needing to say of /data with the absolute forward slash. To my knowledge volumes cannot be mounted that way because the working directory inside the container is constantly changing, but you can set the initial working directory to /data. If you don't want the python script inside the data folder/working directory but still want to be able to call it without specifying a path to the script you'll need to copy it into a bin folder. So in summary you would have the script in bin, your working directory would be /data which would be associated with your machine's directory you used when starting the docker-compose and the script would just use the path ./

Edit: another option if you can't change the starting working directory is simply to cd first: cd /data && yourscript

this post was submitted on 23 Mar 2024
28 points (100.0% liked)

Ask Lemmy

26707 readers
1239 users here now

A Fediverse community for open-ended, thought provoking questions

Please don't post about US Politics.


Rules: (interactive)


1) Be nice and; have funDoxxing, trolling, sealioning, racism, and toxicity are not welcomed in AskLemmy. Remember what your mother said: if you can't say something nice, don't say anything at all. In addition, the site-wide Lemmy.world terms of service also apply here. Please familiarize yourself with them


2) All posts must end with a '?'This is sort of like Jeopardy. Please phrase all post titles in the form of a proper question ending with ?


3) No spamPlease do not flood the community with nonsense. Actual suspected spammers will be banned on site. No astroturfing.


4) NSFW is okay, within reasonJust remember to tag posts with either a content warning or a [NSFW] tag. Overtly sexual posts are not allowed, please direct them to either !asklemmyafterdark@lemmy.world or !asklemmynsfw@lemmynsfw.com. NSFW comments should be restricted to posts tagged [NSFW].


5) This is not a support community.
It is not a place for 'how do I?', type questions. If you have any questions regarding the site itself or would like to report a community, please direct them to Lemmy.world Support or email info@lemmy.world. For other questions check our partnered communities list, or use the search function.


Reminder: The terms of service apply here too.

Partnered Communities:

Tech Support

No Stupid Questions

You Should Know

Reddit

Jokes

Ask Ouija


Logo design credit goes to: tubbadu


founded 1 year ago
MODERATORS