diff --git a/.github/workflows/docker-build-test.yml b/.github/workflows/docker-build-test.yml deleted file mode 100644 index d046d8ed..00000000 --- a/.github/workflows/docker-build-test.yml +++ /dev/null @@ -1,98 +0,0 @@ -name: Docker Build Test - -on: - workflow_dispatch: - inputs: - node_version: - description: 'Node.js version to use' - required: false - default: '20.18.1' - type: string - pnpm_version: - description: 'pnpm version to use' - required: false - default: '10.11.1' - type: string - nginx_version: - description: 'Nginx version to use' - required: false - default: '1.27-alpine' - type: string - -jobs: - build-production: - name: Build Production Image - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build production Docker image - uses: docker/build-push-action@v6 - with: - context: . - file: ./Dockerfile - push: false - load: true - tags: devops-daily:test-prod - build-args: | - NODE_VERSION=${{ inputs.node_version }} - PNPM_VERSION=${{ inputs.pnpm_version }} - NGINX_VERSION=${{ inputs.nginx_version }} - cache-from: type=gha - cache-to: type=gha,mode=max - - - name: Test production image - run: | - docker run -d --name test-prod -p 8080:80 devops-daily:test-prod - sleep 5 - curl -f http://localhost:8080 || exit 1 - docker logs test-prod - docker stop test-prod - docker rm test-prod - - build-development: - name: Build Development Image - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build development Docker image - uses: docker/build-push-action@v6 - with: - context: . - file: ./Dockerfile.dev - push: false - load: true - tags: devops-daily:test-dev - build-args: | - NODE_VERSION=${{ inputs.node_version }} - PNPM_VERSION=${{ inputs.pnpm_version }} - cache-from: type=gha - cache-to: type=gha,mode=max - - build-docker-compose: - name: Build with Docker Compose - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Build with Docker Compose - run: | - docker compose build dev - docker compose build prod - - - name: Verify images exist - run: | - docker images | grep devops-daily diff --git a/.github/workflows/docker-validate.yml b/.github/workflows/docker-validate.yml new file mode 100644 index 00000000..ac5a507f --- /dev/null +++ b/.github/workflows/docker-validate.yml @@ -0,0 +1,54 @@ +name: Docker Validation + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - 'Dockerfile*' + - 'docker-compose*.yml' + - 'docker-compose*.yaml' + - '.github/workflows/docker-validate.yml' + pull_request: + paths: + - 'Dockerfile*' + - 'docker-compose*.yml' + - 'docker-compose*.yaml' + - '.github/workflows/docker-validate.yml' + +jobs: + validate-dockerfiles: + name: Validate Docker Configuration + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Validate docker-compose.yaml syntax + run: | + docker compose config + echo "✓ docker-compose.yaml syntax validation passed" + + - name: Lint Dockerfile + uses: hadolint/hadolint-action@v3.1.0 + with: + dockerfile: Dockerfile + failure-threshold: warning + + - name: Lint Dockerfile.dev + uses: hadolint/hadolint-action@v3.1.0 + with: + dockerfile: Dockerfile.dev + failure-threshold: warning + + - name: Summary + run: | + echo "✅ Docker configuration validation complete" + echo "" + echo "Note: Full image builds are not performed in this workflow to save CI resources." + echo "Production builds are tested during Cloudflare Pages deployments." diff --git a/Dockerfile b/Dockerfile index 1ce944e5..b10b4791 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ RUN apt-get update && \ WORKDIR /app # Copy package files for dependency installation -COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY package.json pnpm-lock.yaml ./ # Install dependencies RUN pnpm install --frozen-lockfile diff --git a/Dockerfile.dev b/Dockerfile.dev index fe52c6a9..d16e087a 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -23,7 +23,7 @@ RUN apt-get update && \ WORKDIR /app # Copy package files for dependency installation -COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY package.json pnpm-lock.yaml ./ # Install all dependencies (including devDependencies) RUN pnpm install --frozen-lockfile