gpt4 book ai didi

docker - 如何在gitlab ci中合并Dockerfile?

转载 作者:行者123 更新时间:2023-12-02 19:28:33 29 4
gpt4 key购买 nike

我有这个gitlab-ci.yml来构建我的SpringBoot应用程序:

image: maven:latest

variables:
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"

cache:
paths:
- .m2/repository/
- target/

build:
stage: build
script:
- mvn $MAVEN_CLI_OPTS clean compile
only:
- /^release.*/

test:
stage: test
script:
- mvn $MAVEN_CLI_OPTS test
- "cat target/site/coverage/jacoco-ut/index.html"
only:
- /^release.*/

现在,我需要在测试阶段运行另一个作业:集成测试。我的应用程序在带有内存数据库的Headless Chrome上运行集成测试,我需要在Windows上做的就是: mvn integration-test
我发现一个已经准备好Headless Chrome的Dockerfile,所以我需要将maven:latest图像与此新图像 https://hub.docker.com/r/justinribeiro/chrome-headless/结合起来

我怎样才能做到这一点?

最佳答案

您可以通过选择maven:latest作为基本镜像来编写新的docker文件。 (这意味着所有Maven最新的图像依赖项都在那里)。您可以将此link引用为如何编写docker文件的方法。

由于maven:latest的基本镜像是debian镜像,而包含具有Headless Chrome的Dockerfile的docker文件也是debian镜像,因此所有OS命令都是相同的。因此,您可以像下面这样编写一个docker文件,其中基本镜像为maven:latest,其余镜像与here相同。

FROM maven:latest
LABEL name="chrome-headless" \
maintainer="Justin Ribeiro <justin@justinribeiro.com>" \
version="2.0" \
description="Google Chrome Headless in a container"

# Install deps + add Chrome Stable + purge all the things
RUN apt-get update && apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
--no-install-recommends \
&& curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \
&& echo "deb https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \
&& apt-get update && apt-get install -y \
google-chrome-beta \
fontconfig \
fonts-ipafont-gothic \
fonts-wqy-zenhei \
fonts-thai-tlwg \
fonts-kacst \
fonts-symbola \
fonts-noto \
ttf-freefont \
--no-install-recommends \
&& apt-get purge --auto-remove -y curl gnupg \
&& rm -rf /var/lib/apt/lists/*

# Add Chrome as a user
RUN groupadd -r chrome && useradd -r -g chrome -G audio,video chrome \
&& mkdir -p /home/chrome && chown -R chrome:chrome /home/chrome \
&& mkdir -p /opt/google/chrome-beta && chown -R chrome:chrome /opt/google/chrome-beta
# Run Chrome non-privileged
USER chrome

# Expose port 9222
EXPOSE 9222

# Autorun chrome headless with no GPU
ENTRYPOINT [ "google-chrome" ]
CMD [ "--headless", "--disable-gpu", "--remote-debugging-address=0.0.0.0", "--remote-debugging-port=9222" ]

我检查了一下,它工作正常。一旦编写了 Dockerfile,就可以使用 dokcer build .从与Dockerfile相同的存储库中构建它。然后,您可以将其推送到docker hub或您自己的注册表,您的gitlab运行程序可以在其中访问docker镜像。确保以示例方式标记您偏好的docker镜像,让我们以为该标记为例,然后将其推送到本地存储库 {your-docker-repo}/maven-with-chrome-headless:1.0.0
然后使用gitlab-ci.yml文件中的先前标记作为 image: {your-docker-repo}/maven-with-chrome-headless:1.0.0

关于docker - 如何在gitlab ci中合并Dockerfile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53869234/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com