【发布时间】:2021-10-11 09:42:32
【问题描述】:
我有一个使用 Docker(在 Ubuntu 中)和 MySQL 作为数据库的 Django 项目,一切正常。我只是好奇:
而不是像这样运行长命令:
docker-compose run backend python manage.py startapp myapp
# 'backend' is the name of service in docker-compose file
我喜欢这样打开shell:
docker-compose run backend sh
然后运行我的命令:
python manage.py startapp myapp
但在这种情况下它将由root创建,所以我无法从外部修改/保存,(需要权限)
我解决了这个问题:
sudo chown -R $USER:$USER .
但我很好奇是否还有其他方法,以便我可以以非 root 身份运行 exec 并从内部修改我的文件,而不是每次都更改所有者。
码头工人撰写:
version: '3.9'
services:
backend:
build: .
volumes:
- .:/backend
ports:
- 8000:8000
depends_on:
- db
db:
image: mysql:latest
environment:
MYSQL_DATABASE: 'pass'
MYSQL_ROOT_PASSWORD: 'pass'
volumes:
- ./data/mysql/db:/var/lib/mysql
Dockerfile:
FROM python:3.9
ENV PYTHONUNBUFFERED 1
WORKDIR /backend
COPY requirements.txt backend/requirements.txt
RUN pip install -r backend/requirements.txt
COPY . /backend
CMD python manage.py runserver 0.0.0.0:8000
【问题讨论】:
-
与其尝试使用 Docker 进行日常开发,可以使用 Python 虚拟环境吗?然后在部署时,删除覆盖
/backend目录的volumes:块,以便使用映像中代码的(经过集成测试的)副本? -
非常感谢您的回答,但我找到了解决方法