Volumes and Django
Hi there! I am a little stuck on something probably quite simple. It is my first Django deployment. My files locally live in a folder called /media/ that I do not include in the repo (it is in .gitignore). Now it is time to put in prod and I made a volume on Railway (path: '/media').
Two problems:
1. How can I copy my old media files over?
2. I tried to manually upload new files and it doesn't seem to be working, I'm guessing my path is wrong?
Here is what my settings looks like:
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = "/media/"
It's a bit urgent so if you know the answer and can help it would be soooo appreciated π Thanks!
69 Replies
Project ID:
44d106ae-9c5c-4d81-86b3-296c53f1efee
44d106ae-9c5c-4d81-86b3-296c53f1efee
what is the mount path of the volume?
/media is what i've put
Dockerfile or nixpacks?
whatever was default set up
im not sure
then nixpacks
in the build logs it menions docker
please read this docs section - https://docs.railway.app/guides/volumes#relative-paths
I already have, but I am confused :S
tl;dr mount to
/app/media
i set my django settings like this originally and the MEDIA_VOLUME_PATH does refer to /app/media (I set it in the env variables in prod):
MEDIA_ROOT = os.getenv("MEDIA_VOLUME_PATH", os.path.join(BASE_DIR, "media"))
MEDIA_URL = "/media/"
go back to the code you originally showed in the root post
and update your mount path
alright
i can't seem to edit it
why not?
the original post?
dunno i click edit post and its the title
why do you need to edit your post?
ohhh sorry i misunderstood you
yes i ahve already changed it back in the code
testing it now
sorry i think i am confused
MEDIA_ROOT = os.getenv("MEDIA_VOLUME_PATH", os.path.join(BASE_DIR, "media"))
MEDIA_URL = "/media/"
change this??
change that back to the code you showed in the original post
and then update your volume's mount
okay
so this? and this:
looks fine at first glance
let's see your urls.py file as well
please enclose that in a code block
edit the message please
code block please
my bad
looks fine to me
it is as if when i make a new post it doesn't know where to save the photo. look what happens:
this is a pic i just uploaded
similarly this is what my files look like in admin on django/wagtail
what are their status codes?
you mean when i clik? pae not found
status code please
im sorry i don't know how tofind that
can you direct me please?
sorry but that's outside of the realm of what we can help with
okay
I'm just going to assume it's 404, meaning you need to fix your urls.py file
ok
is there an example online of what the setup should look like? i think it would help me, i couldn't find one
you've asked at a very bad time, the repo I would have sent has gone missing
thats what i thought
does this provide any info?
https://web-production-2206.up.railway.app/media/images/bamies_main_photo_toijouv.original.jpg
This is the URL that is given to the photoo when i upload it
I'm on mobile, so no
what's your current volume mount
/app/media
what's your media settings
ive been trying different iterations of it
again, use the code you originally posted
it doesn't work. it looks as though when you upload a photo it gets sent to the wrong place a folder that doesn't exist. are you sure /app/media doesn't need to be referenced?
what makes you say it's sent to the wrong location, does the volume's metrics increase?
yes actaully
i guess it is uploaded to the right volume but the website is not trying to pick it up from there? the url of the pic when i click on it is just 'media' not app/media
also, changed it to the original code from the post and printed the MEDIA_ROOT and it gave '/media' is this right?
do you not have BASE_DIR defined?
BASE_DIR = Path(__file__).resolve().parent.parent
why is that not printing anything?
Can you help me with the other part of my question please? Basically, can i push my local media folder to the volume? like with scp or something?
it's complicated, it's best if you upload the media again
okay
i still haven't been able to get it to work. as far as i understnad the media_url is meant to be where i can find the files and i get "Page not found"
as mentioned, your urls.py is wrong
you need something to actually serve the media files on that url path
how can i do this? is there any more documentation on it
so this is wrong?
you said it looked fine here
I'm not a Django developer
this wouldn't be specific to railway
but usually, for example if i was using google buckets, there would be information on how to serve it
right but you are serving from disk, so it's not platform specific
okay is it true that: Railway handles this by default for you, so you usually donβt need to configure Nginx or other web servers manually. (from chat gpt)
meaning if i remove that part from urls.py railway will just sort it for me?
no that's not true at all, this has nothing to do with the platform, your application needs to serve those media files itself
is it better to not use railway volumes?
there's nothing wrong with using railway volume's, I strongly advise you not to ask AI about railway
haha okay. look i'm a little confused there seems to be so little information on how to use this. what should the url look like?
since this is not platform related, I'm unsure why you're unable to find an answer to this on sites like stack overflow
sorry i thought it was related to railway volumes. typically i would be able to find the answer in the documentation
apologies
the mount point stuff was in the docs, but this has now become purely coding questions about django
and for coding questions related to Django, railway's docs aren't going to help