docker / build-push-action

GitHub Action to build and push Docker images with Buildx
https://github.com/marketplace/actions/build-and-push-docker-images
Apache License 2.0
4.11k stars 527 forks source link

Docker: Cannot create container for service: No command specified #1037

Closed VivekPNs closed 4 months ago

VivekPNs commented 5 months ago

Contributing guidelines

I've found a bug, and:

Description

I'm trying to deploy my Node application to a different environment and as part of the process, I have set up a GitHub Actions workflow which has 2 jobs namely, build and deploy_dev. build job will build the image and upload it as an artifact and the deploy_dev job will download the artifact, tag it, and push it to ECR.

I did not encounter any error while building or tagging but, while running the pulled image within ECR, I'm getting the below error, so I'm not sure if it's due to a corrupted image or an issue with the way I'm building or tagging.

Error: Recreating ce3fc36b598e_my-service ... error for test-service Cannot create container for service test-service: No command specified

Here is my Dockerfile:

FROM node:10.16.0
WORKDIR /usr/src/app
ENV PATH /usr/src/app/node_modules/.bin:$PATH

COPY package.json /usr/src/app/package.json
COPY package-lock.json /usr/src/app/package-lock.json
COPY app.js /usr/src/app

ADD src /usr/src/app/src
ADD tests /usr/src/app/tests
ADD migrations /usr/src/app/migrations

COPY .eslintrc.js /usr/src/app
COPY .prettierrc.js /usr/src/app
COPY migrate-mongo-config.js /usr/src/app/migrate-mongo-config.js

COPY .env.example /usr/src/app/.env

RUN npm install
RUN npm run lint

EXPOSE 5000
CMD ["npm", "start"]

I'm not sure about the mistake or if there is an issue while dealing with tar files for tagging and pushing.

Expected behaviour

Once the tar image file is downloaded and tagged properly without any error, it should be able to be pulled in to any ec2 machine and run it.

Actual behaviour

Error: Recreating ce3fc36b598e_my-service ... error for test-service Cannot create container for service test-service: No command specified

Repository URL

No response

Workflow run URL

No response

YAML workflow

name: my-service
'on':
  push:
    branches:
      - master
  workflow_dispatch: null
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Cache Docker layers
        uses: actions/cache@v2
        with:
          path: /tmp/.buildx-cache
          key: '${{ runner.os }}-buildx-${{ github.sha }}'
          restore-keys: |
            ${{ runner.os }}-buildx-
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
      - name: Build docker image
        uses: docker/build-push-action@v4
        with:
          platforms: linux/amd64
          provenance: false
          cache-from: 'type=local,src=/tmp/.buildx-cache'
          cache-to: 'type=local,dest=/tmp/.buildx-cache'
          outputs: 'type=docker,dest=/tmp/my-service.tar'
      - name: Upload artifact
        uses: actions/upload-artifact@v3
        with:
          name: my-service
          path: /tmp/my-service.tar
  deploy_dev:
    needs: build
    runs-on: ubuntu-latest
    environment:
      name: dev
    steps:
      - name: Download artifact
        uses: actions/download-artifact@v3
        with:
          name: my-service
          path: /tmp
      - name: Configure aws credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: '${{ secrets.AWS_ACCESS_KEY_ID }}'
          aws-secret-access-key: '${{ secrets.AWS_SECRET_ACCESS_KEY }}'
          aws-region: us-east-1
      - name: Amazon ECR "Login" Action for GitHub Actions
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1
        with:
          registry-type: private
          skip-logout: false
          mask-password: true
      - name: Deploy to dev
        env:
          ECR_REGISTRY: '${{ steps.login-ecr.outputs.registry }}'
        run: >
          docker image import /tmp/my-service.tar ${{ env.ECR_REGISTRY
          }}/my-service:dev

          docker push ${{ env.ECR_REGISTRY }}/my-service:dev

Workflow logs

No response

BuildKit logs

No response

Additional info

No response

crazy-max commented 5 months ago

Error: Recreating ce3fc36b598e_my-service ... error for test-service Cannot create container for service test-service: No command specified

These logs are not enough. Please post link to your repo if possible that woudl be easy to find out the issue or open a public one with minimal repro. Or full workflow logs in worst case. Thanks.