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:

MEDIAROOT = os.path.join(BASEDIR, "media")

MEDIA_URL = "/media/"

It's a bit urgent so if you know the answer and can help it would be soooo appreciated 🙂 Thanks!

94 Replies

44d106ae-9c5c-4d81-86b3-296c53f1efee


a year ago

what is the mount path of the volume?


/media is what i've put



a year ago

Dockerfile or nixpacks?


whatever was default set up


im not sure


a year ago

then nixpacks


in the build logs it menions docker


a year ago

please read this docs section -


I already have, but I am confused :S


a year ago

tl;dr mount to /app/media


i set my django settings like this originally and the MEDIAVOLUMEPATH does refer to /app/media (I set it in the env variables in prod):

MEDIAROOT = os.getenv("MEDIAVOLUMEPATH", os.path.join(BASEDIR, "media"))

MEDIA_URL = "/media/"


a year ago

go back to the code you originally showed in the root post


a year ago

and update your mount path


alright


i can't seem to edit it


a year ago

why not?


the original post?


dunno i click edit post and its the title


a year ago

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


MEDIAROOT = os.getenv("MEDIAVOLUMEPATH", os.path.join(BASEDIR, "media"))

MEDIA_URL = "/media/"

change this??


a year ago

change that back to the code you showed in the original post


a year ago

and then update your volume's mount


okay


so this? and this:

1293366310155325400
1293366310662574000


a year ago

looks fine at first glance


a year ago

let's see your urls.py file as well


```from django.contrib import admin
from django.urls import path, include, repath from wagtail.admin import urls as wagtailadminurls
from wagtail import urls as wagtailurls from wagtail.documents import urls as wagtaildocsurls
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
path("admin/", admin.site.urls),
path("", include("home.urls")),
path("", include("blogs.urls")),
path("cms/", include(wagtailadminurls)), path("documents/", include(wagtaildocsurls)),
path(r'comments/', include('djangocommentsxtd.urls')),
path("", include(wagtailurls)), ] + static(settings.MEDIAURL,
documentroot=settings.MEDIAROOT)```


a year ago

please enclose that in a code block


`from django.contrib import admin
from django.urls import path, include, repath from wagtail.admin import urls as wagtailadminurls
from wagtail import urls as wagtailurls from wagtail.documents import urls as wagtaildocsurls
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
path("admin/", admin.site.urls),
path("", include("home.urls")),
path("", include("blogs.urls")),
path("cms/", include(wagtailadminurls)), path("documents/", include(wagtaildocsurls)),
path(r'comments/', include('djangocommentsxtd.urls')),
path("", include(wagtailurls)), ] + static(settings.MEDIAURL, documentroot=settings.MEDIAROOT)`


a year ago

edit the message please


a year ago

code block please


my bad


a year ago

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

1293368402479681500


similarly this is what my files look like in admin on django/wagtail

1293368573661810700


a year ago

what are their status codes?


you mean when i clik? pae not found


a year ago

status code please


im sorry i don't know how tofind that


can you direct me please?


a year ago

sorry but that's outside of the realm of what we can help with


okay


a year ago

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


a year ago

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/bamiesmainphoto_toijouv.original.jpg

This is the URL that is given to the photoo when i upload it


a year ago

I'm on mobile, so no


a year ago

what's your current volume mount


/app/media


a year ago

what's your media settings


```MEDIAROOT = os.getenv("RAILWAYVOLUMEMOUNTPATH", os.path.join(BASE_DIR, "media"))

MEDIA_URL = "/media/"```


ive been trying different iterations of it


a year ago

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?


a year ago

what makes you say it's sent to the wrong location, does the volume's metrics increase?


no nothing


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?


a year ago

do you not have BASE_DIR defined?


BASE_DIR = Path(__file__).resolve().parent.parent


a year ago

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?


a year ago

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"



a year ago

as mentioned, your urls.py is wrong


a year ago

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?

1293415148517724200


you said it looked fine here


a year ago

I'm not a Django developer


a year ago

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


a year ago

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?


a year ago

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?


a year ago

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?


a year ago

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


a year ago

the mount point stuff was in the docs, but this has now become purely coding questions about django


a year ago

and for coding questions related to Django, railway's docs aren't going to help


Loading...