Начиная с моего последнего вчерашнего коммита, я столкнулся со странной проблемой, когда GitLab CI постоянно дает сбой с ошибкой, как показано ниже:
$ ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker run -d -p 8010:80 --name my_project $TAG_LATEST"
docker: Error response from daemon: No command specified.
See 'docker run --help'.
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 125
Это приложение React, которое нужно собрать и развернуть на моем сервере.
Это мой Dockerfile
FROM node:16.14.0-alpine as build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:1.19-alpine
COPY --from=build /app/build /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx/nginx.conf /etc/nginx/conf.d
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
В файле .gitlab-ci.yml
у меня есть 2 этапа build
и deploy
. Для большей ясности я хотел бы поделиться им:
stages:
- build
- deploy
variables:
TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
build_test:
image: docker:latest
stage: build
services:
- docker:19.03.0-dind
script:
- docker build -t $TAG_LATEST .
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
- docker push $TAG_LATEST
environment:
name: test
rules:
- if: $CI_COMMIT_BRANCH == "develop"
when: on_success
deploy_test:
image: alpine:latest
stage: deploy
only:
- develop
tags:
- frontend
script:
- chmod og= $SSH_PRIVATE_KEY
- apk update && apk add openssh-client
- ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
- ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker pull $TAG_LATEST"
- ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker container rm -f my_project || true"
- ssh -i $SSH_PRIVATE_KEY -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker run -d -p 8010:80 --name my_project $TAG_LATEST"
environment:
name: test
Я сделал следующие шаги:
1-й попытался запустить образ с помощью команды docker run
вручную на моем сервере. Результат был тот же!
2-й я вытащил проект из gitlab в новую папку и запустил сначала команду docker build -my_project .
, а затем, как я сделал это на сервере. Это работало на моей локальной машине.
3-й. Я повторно проверил свою кодовую базу с помощью
Та же проблема для моего случая.
У меня те же проблемы, никаких изменений в конфигурации, но вдруг я получаю это сообщение об ошибке. Однако базовым образом для меня является «openjdk: 8». Очень странно ...
Вы видите такое же поведение, если вы вытащите образ локально и запустите его? Можете ли вы поделиться изображением с нами?
У меня такая же ошибка уже через 3 дня. Я также использую gitLab CI.
Я решил проблему, добавив эту строку в свой файл docker-compose.yml (в разделе задействованной службы)
command: ["nginx", "-g", "daemon off;"]
Я пока не нахожу первопричину проблемы.
Надеюсь, это поможет.
В настоящее время существует проблема с последней версией докера.
Использовать:
image: docker:20.10.22
вместо :
image: docker:latest
Для более подробной информации перейдите по этой ссылке: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/29593#note_1263383415
Версия Docker на сервере и на локальной машине
Docker version 20.10.22, build 3a2c30b