vscode: crea archivos con el usuario local como propietario cuando se conecta a un contenedor remoto

Tengo una aplicación Django dockerizada ( Dockerfile+ docker-compose.ymlen la raíz del proyecto).

Tengo tres servicios:

  1. nginx
  2. postgres
  3. django

Estoy tratando de usar VScode con la extensión Remote-Containers, así que lo que tengo ahora es un .devcontainerdirectorio con dos archivos (esto se configuró automáticamente):

  1. devcontainer.json
  2. docker-compose.yml (sí, otro aparte del que está en la raíz del proyecto)

Aquí está el problema. Abro vscode y elijo la Reopen in Containeropción. Esto muestra todos los servicios muy bien. La cuestión es que cada vez que creo un archivo a través de vscode o usando bash dentro del contenedor, se crea con el propietario root. Esto se debe a que rootes el usuario predeterminado del djangocontenedor.

Busqué posibles soluciones, pero solo puedo encontrar aquellas que implican agregar un usuario no root en el archivo Dockerfile. No soy el mantenedor del Dockerfileso, no quiero hacer esto. No soy el mantenedor de docker-compose.ymlninguno de los dos, pero creo que está bien cambiarlo. Siempre puedo guardar mis cambios y mostrarlos si hay algún cambio en este archivo en particular.

Teniendo eso en cuenta, edité docker-compose.ymly agregué la línea user: "${HOST_USER}"a mi contenedor django ( HOST_USERes una variable env que se evalúa como 1000:1000) pero luego recibo errores de permiso:

ingrese la descripción de la imagen aquí

Todo lo que quiero es poder usar el contenedor django como mi entorno de desarrollo sin tener que preocuparme por los permisos de los archivos. ¿Es tal vez el Dockerfileinterior del .devcontainerdirectorio el camino a seguir? Si es así, ¿qué tendría que agregar?

.devcontainer/devcontainer.json:

{
    "name": "Existing Docker Compose (Extend)",

    "dockerComposeFile": [
        "../docker-compose.yml",
        "docker-compose.yml"
    ],

    "service": "django",

    "workspaceFolder": "/workspace",

    "settings": {},

    "extensions": [
        "ms-python.python"
    ]
}

.devcontainer/docker-compose.yml:

version: '3.0'
services:
  django:
    # Uncomment if you want to override the service's Dockerfile to one in the .devcontainer 
    # folder. Note that the path of the Dockerfile and context is relative to the *primary* 
    # docker-compose.yml file (the first in the devcontainer.json "dockerComposeFile"
    # array). The sample below assumes your primary file is in the root of your project.
    #
    # build:
    #   context: .
    #   dockerfile: .devcontainer/Dockerfile  (MAYBE THIS SOLVES THE ISSUE?)
    volumes:
      - .:/workspace
    command: /bin/sh -c "while sleep 1000; do :; done"

Answer