-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Description
The production Dockerfile uses a chown
command to recursively change the owner of the WORKDIR
directory:
cookiecutter-django/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile
Line 120 in ed59d08
RUN chown -R django:django ${APP_HOME} |
When starting a new project, this command runs relatively fast. As the project grows, the quantity of files inevitably grows, increasing the execution time.
The recursive flag -R
should be removed and the same result would be achieved:
RUN chown django:django ${APP_HOME}
Rationale
I currently maintain a mature project that was started with an earlier version of this cookiecutter. I often update the project with the patterns found in the upstream, to keep up with the current standards. Now, recursively changing the owner of the WORKDIR
directory takes 2 minutes to complete.
On the preceding lines, both commands use the --chown=django:django
argument to copy all files and directories with the django
user as the owner:
cookiecutter-django/{{cookiecutter.project_slug}}/compose/production/django/Dockerfile
Lines 113 to 117 in ed59d08
{%- if cookiecutter.frontend_pipeline in ['Gulp', 'Webpack'] %} | |
COPY --from=client-builder --chown=django:django ${APP_HOME} ${APP_HOME} | |
{% else %} | |
COPY --chown=django:django . ${APP_HOME} | |
{%- endif %} |
In both cases, the /app
directory itself is owned by root
while its subdirectories and subfiles are all owned by the django
user. Removing the recursive flag -R
to only change the owner of /app
will drastically reduce the execution time and achieve the same result as before.