Implement full CRUD operations for team members with TDD approach: Backend: - TeamMemberController with REST API endpoints - TeamMemberService for business logic extraction - TeamMemberPolicy for authorization (superuser/manager access) - 14 tests passing (8 API, 6 unit tests) Frontend: - Team member list with search and status filter - Create/Edit modal with form validation - Delete confirmation with constraint checking - Currency formatting for hourly rates - Real API integration with teamMemberService Tests: - E2E tests fixed with seed data helper - All 157 tests passing (backend + frontend + E2E) Closes #22
44 lines
1015 B
Docker
44 lines
1015 B
Docker
FROM php:8.4-cli
|
|
|
|
# Install system dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
git \
|
|
curl \
|
|
libpng-dev \
|
|
libonig-dev \
|
|
libxml2-dev \
|
|
zip \
|
|
unzip \
|
|
libpq-dev \
|
|
libzip-dev \
|
|
&& docker-php-ext-install pdo pdo_pgsql mbstring exif pcntl bcmath gd zip
|
|
|
|
# Install Redis extension
|
|
RUN pecl install redis && docker-php-ext-enable redis
|
|
|
|
# Install Composer
|
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
|
|
|
# Set working directory
|
|
WORKDIR /var/www/html
|
|
|
|
# Copy existing application directory contents
|
|
COPY . .
|
|
|
|
# Install PHP dependencies
|
|
RUN composer install --no-interaction --optimize-autoloader
|
|
|
|
# Install Laravel Boost
|
|
RUN php artisan boost:install
|
|
RUN php artisan vendor:publish --provider="Laravel\Boost\BoostServiceProvider"
|
|
RUN php artisan config:clear
|
|
RUN composer dump-autoload
|
|
|
|
# Set permissions
|
|
RUN chmod -R 755 /var/www/html/storage
|
|
|
|
EXPOSE 3000
|
|
|
|
# Run Laravel development server
|
|
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=3000"]
|