gitlab runner (shell executor) 导致以下错误:django.db.utils.OperationalError: unable to open database file
.gitlab-ci.yml:
stages:
- test
pytest:
stage: test
image: docker/compose:latest
tags:
- test
before_script:
- docker-compose build
- docker-compose run --rm django python manage.py migrate
- docker-compose up -d
script:
- docker-compose run django python manage.py test
Django 引擎设置.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
这是我的 Dockerfile。 WORKDIR 目录 /app
FROM python:3.8-alpine
ENV PATH="/scripts:${PATH}"
COPY ./requirements /requirements
RUN pip install -r /requirements/local.txt -r /requirements/production.txt
RUN apk del .tmp
RUN mkdir /app
COPY ./app /app
WORKDIR /app
COPY ./scripts /scripts
RUN chmod +x /scripts/*
RUN mkdir -p /vol/web/media
RUN mkdir -p /vol/web/static
RUN adduser -D user
RUN chown -R user:user /vol
RUN chown -R user:user /app
RUN chmod -R 755 /vol/web
USER user
CMD ["entrypoint.sh"]
我不会将 db.sqlite3 推送到我的 gitlab 项目。
答案 0 :(得分:1)
尝试将当前用户添加到您的“运行”命令中
docker-compose run -u root --rm django python manage.py migrate
此外,当您使用 dind
构建图像时,请检查跑步者的选项,选项 privileged
必须处于 True
条件