'Sharing static folder between backend and nginx containers
I have following Dockerfile
FROM python:3.9
RUN adduser --disabled-password --gecos '' user
WORKDIR /src
COPY . ./
USER user
and docker-compose.yml
nginx:
build: ./nginx
volumes:
- ./static:/static
- ./nginx/etc:/etc/nginx/conf.d
backoffice:
...
container_name: backoffice
command: bash -c "sh core/run_backoffice.sh"
volumes:
- ./core:/src
- ./static:/static
run_backoffice.sh
#!/bin/bash
python ./core/run.py collectstatic --no-input
files structure
total 56
drwxr-xr-x 9 root root 4096 Apr 11 12:53 .
drwxr-xr-x 3 root root 4096 Apr 8 11:57 ..
drwxr-xr-x 6 root root 4096 Apr 11 12:48 core
drwxr-xr-x 5 root root 4096 Apr 11 12:54 core/.
drwxr-xr-x 9 root root 4096 Apr 11 12:53 core/..
-rw-r--r-- 1 root root 384 Apr 11 12:48 core/Dockerfile
-rw-r--r-- 1 root root 654 Apr 8 11:28 core/run.py
-rw-r--r-- 1 root root 270 Apr 11 12:40 core/run_backoffice.sh
-rw-r--r-- 1 root root 3099 Apr 11 12:53 docker-compose.yml
drwxr-xr-x 3 root root 4096 Apr 8 11:28 nginx
When I run collectstatic I get error
backoffice | Traceback (most recent call last):
backoffice | File "/src/./core/run.py", line 22, in <module>
backoffice | main()
backoffice | File "/src/./core/run.py", line 18, in main
backoffice | execute_from_command_line(sys.argv)
backoffice | File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
backoffice | utility.execute()
backoffice | File "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py", line 440, in execute
backoffice | self.fetch_command(subcommand).run_from_argv(self.argv)
backoffice | File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 414, in run_from_argv
backoffice | self.execute(*args, **cmd_options)
backoffice | File "/usr/local/lib/python3.9/site-packages/django/core/management/base.py", line 460, in execute
backoffice | output = self.handle(*args, **options)
backoffice | File "/usr/local/lib/python3.9/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 209, in handle
backoffice | collected = self.collect()
backoffice | File "/usr/local/lib/python3.9/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 135, in collect
backoffice | handler(path, prefixed_path, storage)
backoffice | File "/usr/local/lib/python3.9/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 378, in copy_file
backoffice | self.storage.save(prefixed_path, source_file)
backoffice | File "/usr/local/lib/python3.9/site-packages/django/core/files/storage.py", line 57, in save
backoffice | name = self._save(name, content)
backoffice | File "/usr/local/lib/python3.9/site-packages/django/core/files/storage.py", line 296, in _save
backoffice | os.makedirs(directory, exist_ok=True)
backoffice | File "/usr/local/lib/python3.9/os.py", line 215, in makedirs
backoffice | makedirs(head, exist_ok=exist_ok)
backoffice | File "/usr/local/lib/python3.9/os.py", line 215, in makedirs
backoffice | makedirs(head, exist_ok=exist_ok)
backoffice | File "/usr/local/lib/python3.9/os.py", line 225, in makedirs
backoffice | mkdir(name, mode)
backoffice | PermissionError: [Errno 13] Permission denied: '/src/core/static'
Solution 1:[1]
Create the src directory first
RUN mkdir /src
and try again
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Walucas |
