Hello, has anyone encountered issues logging into ...
# ask-community
c
Hello, has anyone encountered issues logging into Prefect from the CLI? Sorry, this isn't a Prefect-related issue, but I'd appreciate if anyone with Docker experience could point me in the right direction --- Prefect version:
0.14.21
I am using VS Code, dev container, and running
pip install prefect[aws]
in the build step . After the container is done, I am unable to do `prefect auth login -t {token}`as it leads to the error below:
Copy code
vscode ➜ /workspaces/dbt-bigquery (main ✗) $ prefect auth login -t $PREFECT_AUTH_TOKEN
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/pathlib.py", line 1287, in mkdir
    self._accessor.mkdir(self, mode)
FileNotFoundError: [Errno 2] No such file or directory: '/home/vscode/.prefect/client/https-api.prefect.io-graphql'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/prefect", line 8, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/prefect/cli/auth.py", line 83, in login
    success_login = client.login_to_tenant(
  File "/usr/local/lib/python3.8/site-packages/prefect/client/client.py", line 654, in login_to_tenant
    self._save_local_settings(settings)
  File "/usr/local/lib/python3.8/site-packages/prefect/client/client.py", line 524, in _save_local_settings
    self._local_settings_path.parent.mkdir(exist_ok=True, parents=True)
  File "/usr/local/lib/python3.8/pathlib.py", line 1291, in mkdir
    self.parent.mkdir(parents=True, exist_ok=True)
  File "/usr/local/lib/python3.8/pathlib.py", line 1287, in mkdir
    self._accessor.mkdir(self, mode)
PermissionError: [Errno 13] Permission denied: '/home/vscode/.prefect/client'
Hmm .. I had these steps in the Dockerfile:
Copy code
# prefect backend cloud - secrets
RUN mkdir -p /home/vscode/.prefect
COPY .devcontainer/config.toml /home/vscode/.prefect
Running
ls -al
on this folder after it was built shows that the folder belongs to root:
Copy code
vscode ➜ ~/.prefect $ ls -al
total 12
drwxr-xr-x 1 root   root   4096 Jun  6 10:59 .
drwxr-xr-x 1 vscode vscode 4096 Jun  6 11:08 ..
-rw-r--r-- 1 root   root     31 Jun  6 07:32 config.toml
I tried to change the user to vscode before creating the folder, but then the container fails to build
Copy code
...

USER vscode

# prefect backend cloud - secrets
RUN mkdir -p /home/vscode/.prefect
COPY .devcontainer/config.toml /home/vscode/.prefect
Stumped here .. does anyone have any insight into this?
I solved the issue by adding this line to the Dockerfile:
Copy code
RUN chown -R vscode:vscode /home/vscode/.prefect
It seems clunky to me though. Anyone has any other ideas on whats the best way to create folders as non-root user in the Docker build step ? Switching to a different user before creating the folders doesn't seem to work .. Switching back to root and the container is built successfully, but the files end up belonging to root