我尝试做一个非常基本的 GitLab CI 工作。
我想要:
当我推送到开发时,gitlab 会使用标签“develop”构建 docker 镜像
当我推送到 main 时,gitlab 检查当前提交是否有标签,并用它构建镜像,否则不会触发作业。
Build and publish docker image:
stage: build
rules:
- if:
($CI_COMMIT_BRANCH == "main" && $CI_COMMIT_TAG && $CI_PIPELINE_SOURCE == "push")
variables:
TAG: $CI_COMMIT_TAG
- if:
($CI_COMMIT_BRANCH == "develop" && $CI_PIPELINE_SOURCE == "push")
variables:
TAG: develop
script:
- echo $TAG
- ...<another commands>
Run Code Online (Sandbox Code Playgroud)
但它并没有按预期工作。$CI_COMMIT_TAG - 为空。尽管触发作业(合并提交)的提交有标签。
我发现我发现的解释并不能帮助使用“if”语句实现我的目标。基于此处建议的工作流程的
解决方案也没有帮助。
使用名为 COMMIT_TAG 的变量的直观方式似乎很常见。
但它就是行不通。请好心人向我解释如何实现我的目标吗?
一点背景:我是 docker 新手,还不知道任何最佳实践。我的任务是创建一个基于 php 的网络服务,我决定使用 docker-compose 进行配置。
因为我们都是优秀的开发人员,所以我们知道 - 现在没有使用 Composer 构建 php 应用程序的方法。
我应该在构建中安装依赖项吗?因此,通过将其添加到我的 Dockerfile 中:
RUN cd /app && composer install --no-interaction --prefer-source --optimize-autoloader
Run Code Online (Sandbox Code Playgroud)
或者我应该在开发过程中安装依赖项并构建包含依赖项的容器映像?
我只知道一种不这样做的方法:在开发机器上本地安装依赖项,然后构建容器。但是“最佳实践”会是什么样子呢?
而且 - 因为我是这个领域的新手 - 我将如何为我的应用程序服务容器运行“composer require some/package”?
我还注意到一条消息“不要以 root/超级用户身份运行 Composer!” 在构建容器时。我添加COMPOSER_ALLOW_SUPERUSER=1到我的 Env 文件(如这里所示),但此消息仍然出现。
是否可以不在 docker 容器中以 root 身份执行 composer install?我可以忽略该消息吗?
提前致谢,菲利普
为部署在微服务架构(生产中)中的应用程序提供静态文件的首选方式是什么?
为简单起见,假设我有 3 个应用程序服务器和一个将请求转发到这些服务器的负载平衡器。
是否有最佳实践?
我阅读了以下关于“如何将应用程序配置导入到我的 Docker 容器中?”的文章。 https://dantehranian.wordpress.com/2015/03/25/how-should-i-get-application-configuration-into-my-docker-containers/
它总结了 4 个与 2015 年相关的选项。简而言之:
将配置烘焙到容器中
通过环境变量动态设置应用程序配置
通过环境变量动态设置应用程序配置(使用外部 kv 存储)
通过 Docker Volumes 直接映射配置文件
我想知道现在这些选项是否仍然是唯一可行的,或者是否有任何新的选项/模式可以做到这一点?
谢谢。
我有 9 个 pod 正在运行,它们基本上是 9 个不同的应用程序。
是否可以为多个 pod 使用相同的 k8s 服务(LB | 公共 IP),以便我可以通过不同的端口访问它们,但服务的 IP 相同(LB)?
例如像这样:
LB-IP:80 -- 在后端,一个应用程序正在运行,我可以访问它。
LB-IP:8080(与之前的 IP 相同)——我将在后端运行另一个 pod。
**** 每个 pod 的选择器都不同。**
我希望能够通过在 Maven 发布插件 ( mvn -B release:prepare) 中使用非交互模式来自动增加 Java 项目的发布版本。但是我不想使用默认的 Maven 版本控制架构。
我想使用的架构是<major>.<minor>.<bugfix>-SNAPSHOT. 我确实设法在 pom 文件中执行此操作,但是 Maven 尝试按如下方式增加它:
1.0.0-SNAPSHOT
1.0.1-SNAPSHOT
1.0.2-SNAPSHOT
...
Run Code Online (Sandbox Code Playgroud)
但是我希望能够对此进行控制,虽然有时我确实有错误修正并且上述增量工作,但大多数时候我想发布次要版本,因此增量看起来像这样:
1.0.0-SNAPSHOT
1.1.0-SNAPSHOT
1.2.0-SNAPSHOT
...
Run Code Online (Sandbox Code Playgroud) 我在尝试使用以下代码更新堆栈时收到 ROLLBACK_COMPLETE。在事件下,我没有收到错误,因为“属性 SecurityGroupIds 的值必须是字符串列表类型”。请帮助我找到解决方案。
第一个堆栈的 Mycode:
Resources:
myvpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsSupport: true
EnableDnsHostnames: true
InstanceTenancy: default
Tags:
- Key: Name
Value: myvpc
myinternetgateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: mygtwy
mygatewayattach:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref myinternetgateway
VpcId: !Ref myvpc
mysubnet1:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: us-east-1a
VpcId: !Ref myvpc
CidrBlock: 10.0.1.0/24
MapPublicIpOnLaunch: true
Routetable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref myvpc
Route:
Type: AWS::EC2::Route
DependsOn: myinternetgateway
Properties:
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref myinternetgateway
RouteTableId: !Ref Routetable
SubnetARouteTableAssociation: …Run Code Online (Sandbox Code Playgroud) cloud amazon-ec2 amazon-web-services aws-cloudformation devops
我正在尝试Docker通过 next创建图像Dockerfile。必须安装Kerberos客户端。
Dockerfile:
FROM node:latest
RUN export DEBIAN_FRONTEND=noninteractive
RUN apt-get -qq update
RUN apt-get -qq install krb5-user libpam-krb5
RUN apt-get -qq clean
COPY / ./
EXPOSE 3000
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
RUN apt-get -qq install krb5-user libpam-krb5来自 Dockerfile 的下一个命令要求我将值输入到交互式提示中,如下所示:
Default Kerberos version 5 realm:
Run Code Online (Sandbox Code Playgroud)
关键是即使我写了值并按回车,命令也不会终止。出了什么问题以及如何解决?
我正在使用 Power Shell 脚本在 Windows 10 Pro 机器上安装 IIS。我正在使用这篇博文来创建脚本。
该脚本使用以下核心安装 IIS。
# * Make sure you run this script from a Powershel Admin Prompt!
# * Make sure Powershell Execution Policy is bypassed to run these scripts:
# * YOU MAY HAVE TO RUN THIS COMMAND PRIOR TO RUNNING THIS SCRIPT!
Set-ExecutionPolicy Bypass -Scope Process
# To list all Windows Features: dism /online /Get-Features
# Get-WindowsOptionalFeature -Online
# LIST All IIS FEATURES:
# Get-WindowsOptionalFeature -Online | where FeatureName …Run Code Online (Sandbox Code Playgroud) 我已经成功地build为我的Azure Functionin配置了管道配置Azure DevOps。现在我正在配置一个带有Azure App Service Deploy任务的发布管道,我总是收到一个错误为“ Error: More than one package matched with specified pattern: d:\a\r1\a\**\*.zip. Please restrain the search pattern.”
有人遇到过这个问题吗?任何帮助都非常感谢。
devops azure-devops azure-functions azure-pipelines azure-pipelines-release-pipeline
devops ×10
docker ×4
azure-devops ×2
amazon-ec2 ×1
azure-pipelines-release-pipeline ×1
cloud ×1
composer-php ×1
deployment ×1
dockerfile ×1
gitlab-ci ×1
java ×1
kerberos ×1
kubernetes ×1
maven ×1
php ×1
powershell ×1
tfs ×1