【问题标题】:Gitlab ci fails to run docker-compose for django appGitlab ci 无法为 django 应用程序运行 docker-compose
【发布时间】:2021-10-12 08:20:58
【问题描述】:

我正在设置一个 gitlab 管道,我想使用它在 AWS 上使用 Terraform 部署 Django 应用程序。

目前我只是设置管道,以便验证 terraform 并运行测试 (pytest) 和 lynting。

管道在docker中使用docker,看起来是这样的:

image:
  name: hashicorp/terraform:1.0.5
  entrypoint:
    - '/usr/bin/env'
    - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'


stages:
  - Test and Lint


Test and Lint:
  image: docker:20.10.9
  services:
    - docker:20.10.9-dind
  stage: Test and Lint
  script:
    - apk add --update docker-compose
    - apk add python3
    - apk add py3-pip
    - docker-compose run --rm app sh -c "pytest && flake8"
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^(master|production)$/ || $CI_COMMIT_BRANCH =~ /^(master|production)$/'

由于数据库错误,管道无法运行测试,我认为这很奇怪,因为我正在使用 pytest 模拟 django 数据库。

如果我只是运行: docker-compose run --rm app sh -c "pytest && flake8" 在我本地机器的终端上,所有测试都通过了。

知道如何调试吗?

附言 如果我需要添加更多信息,请告诉我。

【问题讨论】:

  • srcript 部分描述了您在主机而不是 docker 中运行的步骤。

标签: django docker pytest gitlab-ci


【解决方案1】:

我认为你不能直接在 CI 中运行 docker。您可以指定在每个步骤中使用哪个图像,然后运行命令。例如:

image: "python:3.7"

before_script:
  - python --version
  - pip install -r requirements.txt

stages:
  - Static Analysis
  - Test

unit_test:
  stage: Test
  script:
  - pytest

看,在这个管道中,我使用了 python:3.7 图像。您可以将 docker 映像上传到某个注册表并在管道中使用它。

【讨论】:

    【解决方案2】:

    我设法解决了这个问题,并且 CI 中的测试通过了

      script:
        - apk add --update docker-compose
        - docker-compose up -d --build && docker-compose run --rm app sh -c "pytest && flake8"
    
    

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 2017-08-03
      • 2020-02-02
      • 2021-09-13
      • 2019-05-09
      • 2021-10-17
      • 2020-12-19
      • 2022-01-03
      • 1970-01-01
      相关资源
      最近更新 更多