You're close.
...
volumes:
- ./:/data
...
working_dir: /data
That will mount your CWD to /data
inside the container and then set the working directory inside to that.
Please don't post about US Politics. If you need to do this, try !politicaldiscussion
1) Be nice and; have fun
Doxxing, 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 spam
Please do not flood the community with nonsense. Actual suspected spammers will be banned on site. No astroturfing.
4) NSFW is okay, within reason
Just remember to tag posts with either a content warning or a [NSFW] tag. Overtly sexual posts are not allowed, please direct them to either [email protected] or [email protected].
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 [email protected]. For other questions check our partnered communities list, or use the search function.
Reminder: The terms of service apply here too.
Logo design credit goes to: tubbadu
You're close.
...
volumes:
- ./:/data
...
working_dir: /data
That will mount your CWD to /data
inside the container and then set the working directory inside to that.
Thank you !!
One step closer :-D if I have the python file all ready to go in the directory, it works, but I can't seem to use my binaries (or the python script) if I compile them in into the image only.
I have my executables in a "binaries_to_use" folder, is there any way to add them to this local work folder? I tried the thing that worked before:
COPY binaries_to_use/setup /
but then
CMD ["./setup"]
doesn't work, I guess it's no longer a "virtual folder for the image" any more?
Thanks again, I'm getting less dumb about this :-p
I have my executables in a “binaries_to_use” folder, is there any way to add them to this local work folder? I tried the thing that worked before:
Put them in one of the folders on the $PATH or provide an absolute path to them in your CMD
Even if ./:./
worked you want to be explicit with your container directories. .
refers to the current directory and that will change based on what you define as your working directory or whatever the base image uses as a working directory. In other words, it's kind of brittle.
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
You've pretty much answered it yourself in the example you gave: you can mount the host's relative path ./ to an absolute path /data in the compose file, and the container will mount the $CWD at launch as /data.
I think most bind mounts are default read-only, which is why your write is failing. Try adding ,rw
to the end of the list entry in volumes
and see if that helps.
edit: another poster got it with working_dir
which also is more right
Using relative paths is bad practice, by the way. It's fine for development and testing, but in production you would want always to use absolute paths. Think of it as a bad habit that leaves surprises for yourself and othere down the road when moving or replicating projects. If you want it to be more dynamic, consider using compose vars and environment variables
Another thing you might want to consider is not mounting the project root as a RW filesystem in your containers, since this allows the container to modify its own compose file. That's rarely something you'd want to do. Better to make a subdirectory for each container in the project folder, and mount those into the appropriate contains