Azure DevOps 容器代理在管道完成后退出 - 如何使其保持空闲状态?

问题描述 投票:0回答:1

问题:

我将 Azure DevOps 与容器代理一起使用,并且我希望代理即使在构建管道完成后也保持空闲并持续运行。但是,一旦管道完成,代理容器就会退出。

我将以下命令添加到 Dockerfile 的末尾以保持容器运行:

CMD ["tail", "-f", "/dev/null"] 

这是我完整的 Dockerfile:

Dockerfile


`# Base image
RUN apk update && apk upgrade

# Installing OpenJDK 11, Node.js, and other required packages
RUN apk add --no-cache bash curl git icu-libs jq openjdk17-jre nodejs npm

ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk
ENV PATH="$JAVA_HOME/bin:$PATH"

# Verify Java and Node.js installations
RUN java -version && node -v && npm -v

WORKDIR /azp/

COPY ./start.sh ./
RUN chmod +x ./start.sh

RUN adduser -D agent
RUN chown agent ./
USER agent

# Another option is to run the agent as root.
# ENV AGENT_ALLOW_RUNASROOT="true"

ENTRYPOINT [ "./start.sh" ]
CMD ["tail", "-f", "/dev/null"]
`

尽管如此,代理容器在管道完成后仍然退出。我尝试过以分离模式、使用 tail 命令和交互模式运行容器,但这些方法都不起作用。

我错过了什么?如何确保容器代理在管道完成后保持空闲并且不退出?

docker azure-devops
1个回答
0
投票

按照官方文档在 Docker 中运行自托管代理,代理工作没有任何问题。分享以下步骤供大家参考。

  1. 按照创建并构建 Dockerfile 中的步骤 1 到 5 进行操作,并使用其中的

    azp-agent-linux.dockerfile
    start.sh

  2. 使用

    docker build --tag "azp-agent:linux" --file "./azp-agent-linux.dockerfile" .

    构建图像
  3. 使用

    -d
    选项运行容器。容器将以分离模式运行并在后台保持运行。代理将保持在线并在工作到来时处理工作。

    docker run -d -e AZP_URL="<Azure DevOps instance>" -e AZP_TOKEN="<Personal Access Token>" -e AZP_POOL="<Agent Pool Name>" -e AZP_AGENT_NAME="Docker Agent - Linux" --name "azp-agent-linux" azp-agent:linux

  4. 触发一些构建并通过

    docker logs azp-agent-linux

    检查日志

    enter image description here 代理在处理作业后返回空闲状态。 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.