如何在docker中创建文件以避免权限问题



我是使用docker的新手,我的任务是创建两个容器:一个用于django项目,另一个用于mysql服务器。

我用Dockerfile和docker-compose.yml制作的。它正在进行的项目";docker compose up";,但是当我尝试在容器内用"创建新文件时,我有权限问题;python manage.py startapp app_name"。基本上我不能修改我的ide(pycharm-ubuntu(中的文件。据我所知,docker中的用户是root用户,所以我需要拥有root权限来更改这些文件,但我不想每次创建这些文件时都将其修改为root用户或更改这些文件的权限。

这是我的Dockerfile:

FROM python:3.9.5
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
CMD python manage.py runserver 0.0.0.0:8000

docker-compose.yml

version: "3.9"
services:
backend:
build:
context: .
dockerfile: Dockerfile
ports:
- 8000:8000
volumes:
- .:/app
depends_on:
- mysqldb
mysqldb:
image: mysql:5.7.34
restart: always
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: django
MYSQL_PASSWORD: djangopass
MYSQL_ROOT_PASSWORD: mysecretpassword
volumes:
- .dbdata:/var/lib/mysql
ports:
- 3306:3306

最好不要使用root用户。最好的方法是创建一个新用户,根据需要授予它权限。将代码复制到用户主目录,并以非root身份运行映像。

RUN useradd--创建主页myuser

用户myuser

运行mkdir/home/myuser/code

WORKDIR/home/myuser/code

复制。

最新更新