Ah, I think I know what the problem is. Didn't think of this before, but 
Django does not want to serve static files (css, js, images, etc) when in 
PROD mode (and DEBUG=False).

There are two routes I can think of right now: 
1. Set up White Noise to make Django serve static files 
(http://whitenoise.evans.io/en/stable/)
2. Set up the Azure CDN I described above

I would personally go with option 2, because for me that made a big 
difference in terms of performance. 


On Wednesday, 10 October 2018 05:04:14 UTC+2, Lawrence Goh wrote:
>
> Hi Vincent,
>
> I guess I celebrated too early. I removed the cache and now the site on 
> port 80 is broken as the images and JS are not downloaded.  Any idea on 
> this?
>
> Thanks.
>
> Regards,
> Lawrence
>
> On Wed, Oct 10, 2018 at 2:36 PM Lawrence Goh <[email protected] 
> <javascript:>> wrote:
>
>> Hi Vincent,
>>
>> Thanks a lot of the suggestion.  I tried the suggestion on dumping nginx 
>> and changing the port number but I kept couchdb as it is though.  It is 
>> working as a web app for containers using multi-container.
>>
>> Will put the single container approach on the pipeline :)
>>
>> Thanks again!
>>
>> Regards,
>> Lawrence
>>
>> On Wed, Oct 10, 2018 at 12:13 AM Vincent Meijer <[email protected] 
>> <javascript:>> wrote:
>>
>>> No worries, I come from a .net environment myself. 
>>> As for the App Service, I realized that I set up Postgres and 
>>> Elasticsearch separately, that is why I was able to use the Single 
>>> Container approach (see below for future reference). 
>>>
>>> I just remembered I wasn't able to get the docker-compose approach 
>>> working in the App Service.
>>> If you like to give it another try, you could remove the nginx service 
>>> from your docker-compose.yml.
>>> Then add a port mapping on your arches service in your 
>>> docker-compose.yml from 80 on the host (App Service) to 8000 on the 
>>> container:
>>> Change:
>>> ports:
>>> - '8000:8000'
>>> To:
>>> ports:
>>> - '80:8000'
>>>
>>> Also be sure to set the DOMAIN_NAMES setting in your docker-compose.yml 
>>> to the address of your web app.
>>>
>>> Finally, you may try removing the couchdb service from your 
>>> docker-compose.yml, as this db is not (yet) used by arches at the moment 
>>> (saves some resources). 
>>> Be sure to *keep* the couchdb environment variables in your Arches 
>>> service though (their values don't matter, but they are expected to be 
>>> present). 
>>>
>>>
>>> Here is some background info that might be useful: 
>>> https://blogs.msdn.microsoft.com/appserviceteam/2018/05/07/multi-container/
>>>
>>>
>>>
>>> *Single Container *approach
>>> For the Single Container approach you wouldn't use a compose file at 
>>> all, but that is assuming you run Postgres and Elasticsearch elsewhere.
>>> - On the App Service blade, select Container Settings (step 1 in the 
>>> screenshot below).
>>> - Select 'Single Container' (step 2)
>>> - Configure that page, ie. select the right image etc.
>>> - Go to 'Application Settings' (step 3 on screenshot) and fill out all 
>>> environment variables you have in your docker-compose.yml as individual app 
>>> settings
>>>
>>>
>>> [image: Azure App Service.png]
>>>
>>>
>>> On Tuesday, 9 October 2018 12:26:15 UTC+2, Lawrence Goh wrote:
>>>>
>>>> Hi Vincent,
>>>>
>>>> Thanks for the reply.  I am not so well verse in the web development in 
>>>> open source space.  Last I knew something related was Apache :) Pardon my 
>>>> knowledge as I am from .net.  Some help would be very much appreciated to 
>>>> implement this.  
>>>>
>>>> Based on the docker compose file, we have these containers - arches, 
>>>> nginx, db, elasticsearch, couchdb and letsencrypt. The single container 
>>>> would be having multiple single containers excluding nginx?
>>>>
>>>> What would be the best approach?
>>>>
>>>> Thanks.
>>>>
>>>> Regards,
>>>> Lawrence 
>>>>
>>>>
>>>>
>>>>
>>>> On Tue, Oct 9, 2018, 8:46 PM Vincent Meijer <[email protected]> 
>>>> wrote:
>>>>
>>>>> Hi Lawrence,
>>>>>
>>>>> The Azure App Service is meant to take over everything but the app 
>>>>> itself, so running it with an nginx container is not necessary. 
>>>>> I used the App Service for a short while and only could get it to work 
>>>>> when using the single container approach. 
>>>>>
>>>>> That being said, I found the App Service to be extremely slow (and 
>>>>> expensive), so I am eager to hear your experiences with it. 
>>>>>
>>>>> For me it did help to set up Azure CDN to serve static files.
>>>>> Roughly:
>>>>> 1. Set up an Azure Blob Storage account
>>>>> 2. Configure Django to use the azure-storage package (
>>>>> https://django-storages.readthedocs.io/en/latest/backends/azure.html  
>>>>> -> don't do the static files steps)
>>>>> 3. Set up Azure CDN with the storage account from step 1 as origin.
>>>>> 4. Set `STATIC_URL` in settings.py to the CDN endpoint.
>>>>>
>>>>>
>>>>> I hope this helps and please share your experiences with us :)
>>>>> Vincent
>>>>>
>>>>>
>>>>> On Tuesday, 9 October 2018 04:19:42 UTC+2, Lawrence Goh wrote:
>>>>>>
>>>>>> Hi!  I am trying to set up the Arches Project on Azure using its Web 
>>>>>> App for Containers.  But I hit a roadblock where I will get a '400 Bad 
>>>>>> Request' when browsing it.  I see the Azure logs are displaying that the 
>>>>>> NGINX got called when I triggered it on a browser.  Hope to get some 
>>>>>> help 
>>>>>> on this.  Thanks.
>>>>>>
>>>>> -- 
>>>>> -- To post, send email to [email protected]. To unsubscribe, 
>>>>> send email to [email protected]. For more information, 
>>>>> visit https://groups.google.com/d/forum/archesproject?hl=en
>>>>> --- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "Arches Project" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to [email protected].
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> -- 
>>> -- To post, send email to [email protected] <javascript:>. To 
>>> unsubscribe, send email to [email protected] 
>>> <javascript:>. For more information, visit 
>>> https://groups.google.com/d/forum/archesproject?hl=en
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Arches Project" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected] <javascript:>.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>

-- 
-- To post, send email to [email protected]. To unsubscribe, send 
email to [email protected]. For more information, 
visit https://groups.google.com/d/forum/archesproject?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Arches Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to