Github操作Mkdocs和Docker容器-运行不佳

ukxgm1gy  于 2023-01-08  发布在  Docker
关注(0)|答案(1)|浏览(271)

我在GitHub提交操作运行的容器中使用mkdocs时遇到了问题。
大家好,
我一直在尝试把我的python代码文档放到GitHub上,我已经通过运行GitHub操作成功地做到了

mkdocs gh-deploy --force

使用以下GitHub操作工作流:

name: ci 
on:
  push:
    branches:
      - master 
      - main
permissions:
  contents: write
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: 3.x
      - run: pip install mkdocs
      - run: pip install mkdocs-material
      - run: pip install mkdocstrings[python]
      - run: mkdocs gh-deploy --force --config-file './docs/mkdocs.yml'

问题是mkdocstrings不起作用,所以网页上没有显示源代码。我做了一个Docker容器,可以通过卷绑定访问本地计算机上的. github文件夹。
停靠文件:

FROM ubuntu:20.04
# This stops being asked for geographical location with apt-get
ARG DEBIAN_FRONTEND=noninteractive
WORKDIR /
COPY requirements.txt /
# TODO: #1 Maybe should not use update (as this can change environment from update to update)
RUN apt-get update -y
RUN apt-get install -y python3.10 python3-pip git-all expect
RUN pip install -r requirements.txt

Docker组成:

version: "3.9"
services:
  mkdocs:
    build: .
    container_name: mkdocs
    ports:
      - 8000:8000
    env_file:
      - ../.env
    volumes:
      - ../:/project
    working_dir: /project/docs
    command:
      sh -c "./gh-deploy.sh"

当我在电脑上运行Docker容器时,这是有效的,但当然当它作为GitHub操作的工作流运行时,它没有访问. github文件夹的权限。

name: dockerMkdocs
on:
  push:
    branches:
      - master 
      - main
jobs:

  build:

    runs-on: ubuntu-latest
    env:
      GH_user: ${{ secrets.GH_user }}
      GH_token: ${{ secrets.GH_token }}
    steps:
    - uses: actions/checkout@v2
    - name: Build the Docker image and run
      run: docker compose --file ./docs/Docker-compose_GA.yml up

有谁知道mkdocs在上面的第一个例子中运行时是如何知道它在github操作中运行的,但是当它在docker的容器中运行时却不能访问相同的"环境"的吗?如果我能回答这个问题,那么我就可以让'mkdocs gh-deploy--force'在github操作中工作,并加快CI/CD。
我的GitHub存储库位于:https://github.com/healthENV/healthENVsandbox
多谢了

mkshixfv

mkshixfv1#

我觉得你有两个选择:

1.在容器内运行整个作业

在这种情况下, checkout 操作将获取您的存储库,然后您运行的脚本可以找到必要的文件。这是因为作业中的所有步骤都在容器内部执行。

2.挂载$GITHUB_WORKSPACE文件夹

在容器中装载包含 checkout 的repo的文件夹。您已经将文件夹装载到项目文件夹,但似乎不是正确的文件夹。您可以在运行docker compose之前运行检查以查看当前文件夹是什么(也可以在脚本中运行额外的检查)。

相关问题