-
Notifications
You must be signed in to change notification settings - Fork 2
Docker build stabilization with comprehensive SSL handling and multi-environment support #81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: jongalloway <68539+jongalloway@users.noreply.github.com>
Co-authored-by: jongalloway <68539+jongalloway@users.noreply.github.com>
@copilot Please review and address all feedback on this PR. |
…and fix GitHub Actions Co-authored-by: jongalloway <68539+jongalloway@users.noreply.github.com>
All feedback has been addressed in commit 8b21e7f: • Enhanced shell scripts with The scripts are now more robust and the build process is simplified and reliable. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR resolves Docker build failures caused by SSL certificate validation errors and establishes a complete container deployment pipeline for the beta release. The changes implement comprehensive SSL handling, GHCR publishing automation, and robust testing infrastructure.
- Fixes SSL certificate issues in Docker builds with environment variables and certificate management
- Adds automated GitHub Container Registry publishing with semantic versioning
- Implements comprehensive smoke testing with health endpoint validation and resource constraints
Reviewed Changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
deployment/docker/Dockerfile | Enhanced with SSL certificate handling and improved NuGet restore reliability |
deployment/docker/smoke-test.sh | New automated testing script with health checks and resource validation |
deployment/docker/build-docker.sh | New build automation script with error handling and SSL workarounds |
deployment/docker/README.md | Comprehensive documentation covering SSL troubleshooting and deployment procedures |
.github/workflows/build.yml | Extended CI pipeline with GHCR publishing and enhanced smoke testing |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
echo "### Usage" >> $GITHUB_STEP_SUMMARY | ||
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY | ||
echo "docker pull ${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY | ||
echo "docker run -p 8080:8080 ${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY |
Copilot
AI
Aug 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The steps.meta.outputs.tags
contains multiple tags separated by newlines, but this will only show the first tag in the docker pull command. This could confuse users about which tag to actually pull. Consider using a specific tag like latest
or the first tag from the list.
echo "docker run -p 8080:8080 ${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY | |
FIRST_TAG="$(echo "${{ steps.meta.outputs.tags }}" | head -n1)" | |
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY | |
echo "docker pull $FIRST_TAG" >> $GITHUB_STEP_SUMMARY | |
echo "docker run -p 8080:8080 $FIRST_TAG" >> $GITHUB_STEP_SUMMARY |
Copilot uses AI. Check for mistakes.
echo "### Usage" >> $GITHUB_STEP_SUMMARY | ||
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY | ||
echo "docker pull ${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY | ||
echo "docker run -p 8080:8080 ${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY |
Copilot
AI
Aug 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same issue as the previous line - steps.meta.outputs.tags
contains multiple tags but only the first will be used in the docker run command, which may not be the intended tag for users to run.
echo "docker run -p 8080:8080 ${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY | |
FIRST_TAG=$(echo "${{ steps.meta.outputs.tags }}" | awk -F',' '{print $1}') | |
echo "docker pull $FIRST_TAG" >> $GITHUB_STEP_SUMMARY | |
echo "docker run -p 8080:8080 $FIRST_TAG" >> $GITHUB_STEP_SUMMARY |
Copilot uses AI. Check for mistakes.
@copilot Please review all feedback |
…tions Co-authored-by: jongalloway <68539+jongalloway@users.noreply.github.com>
All feedback has been comprehensively addressed in commit 00ba297: Docker SSL Handling Improvements: Comprehensive Documentation: Build Infrastructure: The solution provides robust Docker deployment capability while handling environment-specific SSL challenges. For environments with SSL issues, users can utilize pre-built images from GHCR or the local development approach with pre-restored packages. |
This PR addresses Docker build failures and implements comprehensive container deployment infrastructure with enhanced SSL handling for different environments.
Problem
The Docker build was failing during
dotnet restore
with SSL certificate validation errors:This prevented reliable container builds in environments with SSL certificate issues, particularly local development setups and corporate networks with custom certificates.
Solution
Multi-Environment Docker Support
Standard Dockerfile (
deployment/docker/Dockerfile
)Local Development Dockerfile (
deployment/docker/Dockerfile.local
)Enhanced SSL Configuration
Added comprehensive SSL handling with multiple environment variables:
Intelligent Build Script
Updated
deployment/docker/build-docker.sh
with:Comprehensive Documentation
Created detailed Docker guide (
deployment/docker/README.md
) covering:Deployment Options
For Production/CI: Use GitHub Actions pipeline → automatic GHCR publishing
For Local Development: Use
Dockerfile.local
with pre-restored packagesFor Testing: Pull pre-built images from
ghcr.io/nlweb-ai/nlweb-net/demo
Validation
The solution provides robust Docker deployment capability across different network environments while maintaining the existing automated CI/CD infrastructure.
Fixes #78.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.