Docker GitLab无法在我的服务器上运行我的映像
我使用Gitlab CI/CD。我在管道上运行不同的Docker GitLab无法在我的服务器上运行我的映像,docker,gitlab-ci,devops,pipeline,Docker,Gitlab Ci,Devops,Pipeline,我使用Gitlab CI/CD。我在管道上运行不同的stage 对于deploy staging,当我的管道想要在我的服务上运行我的映像时,我遇到了一个问题--> yaml文件: 看起来像变量$IMAGE\u TAG,$IMAGE\u NAME为空。 您应该尝试在部署步骤中添加变量,如下所示 deploy-staging: stage: deploy image: gitlab/dind:latest cache: {} services: - d
stage
对于deploy staging
,当我的管道想要在我的服务上运行我的映像时,我遇到了一个问题-->
yaml文件:
看起来像变量
$IMAGE\u TAG
,$IMAGE\u NAME
为空。
您应该尝试在部署步骤中添加变量,如下所示
deploy-staging:
stage: deploy
image: gitlab/dind:latest
cache: {}
services:
- docker:dind
variables:
REGISTRY_URL: registry.gitlab.com
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
IMAGE_NAME: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
IMAGE_TAG: ${CI_COMMIT_REF_SLUG}
before_script:
...
您可以为管道共享yaml文件吗?似乎变量是empty@Rezwan我更新我的postu是否更改了您的config.toml文件,以便使用特权标志运行docker executor@NicolaSpinster
$IMAGE\u标记
变量不为空
cache:
key: "$CI_COMMIT_REF_NAME"
paths:
- .maven/
image: maven:3-jdk-8
stages:
- build
- test
- analyze
- package
- release
- deploy
before_script:
- chmod +x mvnw
- export MAVEN_USER_HOME=`pwd`/.maven
- chmod +x mvnw
- ./mvnw com.github.eirslett:frontend-maven-plugin:install-node-and-npm -DnodeVersion=v10.13.0 -DnpmVersion=6.4.1 -Dmaven.repo.local=$MAVEN_USER_HOME
- ./mvnw com.github.eirslett:frontend-maven-plugin:npm -Dmaven.repo.local=$MAVEN_USER_HOME
maven-compile:
stage: build
script:
- ./mvnw clean compile -Dmaven.test.failure.ignore=true -Dmaven.test.skip=true -Dmaven.repo.local=$MAVEN_USER_HOME
artifacts:
paths:
- target/classes/
- target/generated-sources/
expire_in: 1 day
#maven-test:
# stage: test
# script:
# - ./mvnw test -Dmaven.repo.local=$MAVEN_USER_HOME
# artifacts:
# reports:
# junit: target/surefire-reports/TEST-*.xml
# paths:
# - target/test-results
# expire_in: 1 day
#frontend-test:
# stage: test
# script:
# - ./mvnw com.github.eirslett:frontend-maven-plugin:npm -Dfrontend.npm.arguments='test -- -u' -Dmaven.repo.local=$MAVEN_USER_HOME
# artifacts:
# reports:
# junit: target/test-results/jest/TESTS-*.xml
# paths:
# - target/test-results
# expire_in: 1 day
maven-package:
stage: package
script:
- ./mvnw verify -Pprod -Dmaven.test.failure.ignore=true -Dmaven.test.skip=true -Dmaven.repo.local=$MAVEN_USER_HOME
artifacts:
paths:
- target/*.war
expire_in: 1 day
docker-push:
image: docker:latest
services:
- docker:dind
variables:
REGISTRY_URL: registry.gitlab.com
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
IMAGE_NAME: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
IMAGE_TAG: ${CI_COMMIT_REF_SLUG}
stage: release
dependencies:
- maven-package
before_script:
- docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $REGISTRY_URL
script:
- docker build -f Dockerfile --tag=$IMAGE_TAG -t $IMAGE_NAME .
- docker push $IMAGE_NAME
deploy-staging:
stage: deploy
image: gitlab/dind:latest
cache: {}
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
before_script:
# add the server as a known host
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- eval "$(ssh-agent -s)"
- ssh-add ~/.ssh/id_rsa
- ssh-keyscan -H $DEPLOYMENT_SERVER_IP >> ~/.ssh/known_hosts
script:
- ssh deployer@$DEPLOYMENT_SERVER_IP "docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}"
# stop container, remove image.
- ssh deployer@$DEPLOYMENT_SERVER_IP "docker stop ${IMAGE_TAG}" || true
- ssh deployer@$DEPLOYMENT_SERVER_IP "docker rm ${IMAGE_TAG}" || true
- ssh deployer@$DEPLOYMENT_SERVER_IP "docker rmi -f ${IMAGE_NAME}" || true
# start new container
- ssh deployer@$DEPLOYMENT_SERVER_IP "docker run --publish=8888:8888 -d ${IMAGE_NAME}"
only:
- develop
deploy-staging:
stage: deploy
image: gitlab/dind:latest
cache: {}
services:
- docker:dind
variables:
REGISTRY_URL: registry.gitlab.com
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
IMAGE_NAME: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
IMAGE_TAG: ${CI_COMMIT_REF_SLUG}
before_script:
...