126 lines
3.3 KiB
Markdown
126 lines
3.3 KiB
Markdown
# Template Project
|
|
|
|
This is a template project that follows a standardized structure for Docker-based applications.
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
./
|
|
├── .woodpecker.yml # CI configuration
|
|
├── build-test-run.sh # Convenience script for local development
|
|
├── docker/
|
|
│ └── template/ # Main application container
|
|
│ ├── Dockerfile # Base Dockerfile
|
|
│ ├── Dockerfile.production # Production-specific Dockerfile
|
|
│ └── src/ # Application source code
|
|
├── tests/ # Test scripts
|
|
├── temp/ # Local testing scratch space
|
|
├── docker-compose.dev.yml # Docker Compose for local development
|
|
├── docker-compose.production.yml
|
|
├── docker-compose.staging.yml
|
|
├── docker-compose.test.yml
|
|
├── stack.staging.yml
|
|
└── stack.production.yml
|
|
```
|
|
|
|
## Local Development
|
|
|
|
### Quick Start
|
|
|
|
The easiest way to get started with local development is to use the `build-test-run.sh` script:
|
|
|
|
```bash
|
|
./build-test-run.sh
|
|
```
|
|
|
|
This script will:
|
|
1. Build the Docker images using docker-compose.dev.yml
|
|
2. Run tests if available
|
|
3. Start all services in the background
|
|
4. Display the URL to access the application
|
|
|
|
### Development Compose File
|
|
|
|
The `docker-compose.dev.yml` file is designed for local development. It includes:
|
|
- Volume mounts for code changes without rebuilding
|
|
- Debug environment variables
|
|
- Health checks
|
|
- Local ports for easy access
|
|
|
|
To use it directly:
|
|
```bash
|
|
# Build and start in one command
|
|
docker compose -f docker-compose.dev.yml up --build
|
|
|
|
# Run in the background
|
|
docker compose -f docker-compose.dev.yml up -d
|
|
|
|
# View logs
|
|
docker compose -f docker-compose.dev.yml logs -f
|
|
|
|
# Stop services
|
|
docker compose -f docker-compose.dev.yml down
|
|
```
|
|
|
|
### Using the `temp` Directory
|
|
|
|
The `./temp/` directory serves as a scratch space for local testing and development. It's designed to store temporary files that shouldn't be committed to version control, such as:
|
|
|
|
- Test output logs (e.g., `test_output.log`)
|
|
- Temporary build artifacts
|
|
- Local configuration overrides
|
|
- Mock data for testing
|
|
- Debug logs and crash reports
|
|
|
|
#### Example Usage
|
|
|
|
1. Running tests with output:
|
|
```bash
|
|
# Test output will be written to ./temp/test_output.log
|
|
./tests/run_tests.sh > ./temp/test_output.log
|
|
```
|
|
|
|
2. Local configuration:
|
|
```bash
|
|
# Create a local config override
|
|
cp config.yml ./temp/local_config.yml
|
|
# Edit local_config.yml for testing
|
|
```
|
|
|
|
3. Debug logs:
|
|
```bash
|
|
# Application debug logs
|
|
docker-compose -f docker-compose.test.yml up > ./temp/debug.log
|
|
```
|
|
|
|
### Important Notes
|
|
|
|
- The `./temp/` directory is git-ignored
|
|
- Files in this directory are temporary and can be safely deleted
|
|
- Use this directory for any files that shouldn't be committed to version control
|
|
- The directory is mounted in test containers for easy access to test outputs
|
|
|
|
## Development Workflow
|
|
|
|
1. Start local development:
|
|
```bash
|
|
./build-test-run.sh
|
|
# or
|
|
docker compose -f docker-compose.dev.yml up --build
|
|
```
|
|
|
|
2. Run tests:
|
|
```bash
|
|
./tests/run_tests.sh
|
|
```
|
|
|
|
3. Check test outputs in `./temp/` directory
|
|
|
|
4. Clean up temporary files:
|
|
```bash
|
|
rm -rf ./temp/*
|
|
```
|
|
|
|
## CI/CD
|
|
|
|
The project uses Woodpecker CI for continuous integration. The `temp` directory is not included in CI builds to ensure clean, reproducible builds. |