我正在尝试设置一个运行UbuntuLinux18.04作为docker主机的构建服务器。
主机有三个docker容器在运行——docker注册表——Gitlab服务器——Gitlab Runner(用于构建应用程序)
我希望Gitlab Runner容器使用nginx和编译的Angular代码构建docker映像,并将其推送到docker注册表。
我已经成功地设置了所有三个运行的容器,Gitlab runner正在构建angular项目,但我面临的挑战是在Gitlab runner容器中构建docker形象。
Gitlab Runner容器中无法使用Docker命令来构建Docker映像。
这可能吗??
我试图安装docker。Gitio仍然可以在docker的时间内创建容器,但不能在docker的时间内创建容器。它仍然说docker不在。
这是我的。gitlab ci。yml文件
stages:
- build
build:
stage: build
image: node:10.9.0
script:
- npm install -g @angular/cli
- npm install -g typescript
- npm install
- ng build --prod
- docker image build -t tag/to/image .
- docker push tag/to/image
tags:
- angular
cache:
paths:
- node_modules/
artifacts:
expire_in: 1 week
paths:
- dist/*
only:
- master
这是我的nginx。配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm;
include /etc/nginx/mime.types;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location / {
try_files $uri $uri/ /index.html;
}
}
}
这是我想用来构建的Dockerfile
FROM nginx:alpine
COPY nginx.conf /etc/nginx/nginx.conf
WORKDIR /usr/share/nginx/html
COPY dist/ .
在我的项目中,我通常在docker文件中执行构建步骤,并在我的页面上使用docker:image。gitlab ci。所以安装的Docker是我对runner唯一的依赖。
在gitlab留档中,有一个关于如何在Gitlab-CI管道中构建docker文件的参考。这里描述了最干净、最好的方法,效果非常好。
在我们的例子中,我们需要在管道中进行一些额外的编译,所以我们使用python:3.6.5 docker映像,并在其中安装了docker。
重要提示:确保gitlab runner docker executor的“privileged”设置为true
executor = "docker"
[runners.docker]
privileged = true
首先我们定义了gitlab-ci.yml顶部的“install_docker”
.install_docker: &install_docker |
apt-get update
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt-get update
apt-get -y install docker-ce
然后我们在工作中需要时使用它
script:
- *install_docker
假设我在Fedora中以的身份登录,我将从Dockerfile构建Docker映像。该映像将包含一个LAMP环境。我有一个Apache虚拟主机(VH)默认文件,如下所示: 作为构建过程的一部分,该文件被复制到图像上的适当位置。 我可以从主机获取登录用户名并动态设置到此VH吗?最后,我希望得到以下结果: 我知道我可以从bash中使用获取当前用户的值,但我如何在Docker构建中将其插入/设置到VH文
问题内容: 我有一个Jenkins作为docker容器运行,现在我想使用管道构建Docker映像,但是Jenkins容器总是告诉未找到Docker。 这是我运行詹金斯图像的方式: Jenkins映像的DockerFile是:https : //github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dock
使用Compose,如果我运行,它将重建所有容器: 即使在使用缓存重建时,这也需要时间。所以我的问题是: 有没有办法只重建一个特定的容器?
目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个
我有一个Jenkins作为docker容器运行,现在我想使用管道构建docker映像,但Jenkins容器总是告诉docker not found。 以下是我如何运行我的詹金斯形象: Jenkins图像的DockerFile是:https://github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dock
问题内容: 我想构建一个在其启动日志中显示其构建日期时间的容器。有没有办法将信息从我的构建机器注入到容器中? 问题答案: 构建过程中每个RUN步骤的输出是对文件系统的更改。因此,您可以将日期输出到图像中的文件。容器中的日志只是您运行的命令的标准输出。因此,您可以在入口点中查找日期。 在代码中,您将在Dockerfile的末尾: 在入口点脚本中: