docker
This commit is contained in:
21
.dockerignore
Normal file
21
.dockerignore
Normal file
@@ -0,0 +1,21 @@
|
||||
# AAF Systems Homepage - Docker
|
||||
|
||||
# Dockerfile
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Development files
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# IDE files
|
||||
.vscode/
|
||||
.idea/
|
||||
|
||||
# Build output (will be created inside container)
|
||||
dist/
|
||||
26
Dockerfile
Normal file
26
Dockerfile
Normal file
@@ -0,0 +1,26 @@
|
||||
# Use Node.js 18 alpine as base image for smaller size
|
||||
FROM node:18-alpine
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /app
|
||||
|
||||
# Copy package files
|
||||
COPY app/package*.json ./
|
||||
|
||||
# Install dependencies
|
||||
RUN npm install
|
||||
|
||||
# Copy the rest of the application code
|
||||
COPY app/ .
|
||||
|
||||
# Build the application
|
||||
RUN npm run build
|
||||
|
||||
# Install a simple HTTP server to serve the built files
|
||||
RUN npm install -g serve
|
||||
|
||||
# Expose port 8080
|
||||
EXPOSE 8080
|
||||
|
||||
# Start the application on port 8080
|
||||
CMD ["serve", "-s", "dist", "-l", "8080"]
|
||||
126
README.md
126
README.md
@@ -1,2 +1,126 @@
|
||||
# aaf-systems-homepage
|
||||
# AAF Systems Homepage
|
||||
|
||||
A modern 3D homepage built with Three.js, TypeScript, and Vite.
|
||||
|
||||
## Features
|
||||
|
||||
- 3D graphics with Three.js
|
||||
- Physics simulation with Cannon.js
|
||||
- Post-processing effects
|
||||
- TypeScript for type safety
|
||||
- Hot reload development with Vite
|
||||
|
||||
## Docker Setup
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Docker
|
||||
- Docker Compose (optional)
|
||||
|
||||
### Running with Docker
|
||||
|
||||
#### Option 1: Using Docker Compose (Recommended)
|
||||
|
||||
```bash
|
||||
# Build and run the application
|
||||
docker-compose up --build
|
||||
|
||||
# Run in detached mode
|
||||
docker-compose up -d --build
|
||||
|
||||
# Stop the application
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
#### Option 2: Using Docker directly
|
||||
|
||||
```bash
|
||||
# Build the Docker image
|
||||
docker build -t aaf-systems-homepage .
|
||||
|
||||
# Run the container
|
||||
docker run -p 8080:8080 aaf-systems-homepage
|
||||
```
|
||||
|
||||
The application will be available at `http://localhost:8080`
|
||||
|
||||
## Local Development
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Node.js 18+
|
||||
- npm
|
||||
|
||||
### Setup
|
||||
|
||||
```bash
|
||||
cd app
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
The development server will start at `http://localhost:5173`
|
||||
|
||||
### Build for Production
|
||||
|
||||
```bash
|
||||
cd app
|
||||
npm run build
|
||||
npm run preview
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
- `app/` - Main application directory
|
||||
- `src/` - TypeScript source code
|
||||
- `public/` - Static assets
|
||||
- `index.html` - Entry point
|
||||
- `Dockerfile` - Docker configuration
|
||||
- `docker-compose.yml` - Docker Compose configuration
|
||||
|
||||
## Docker Packaging & Transfer
|
||||
|
||||
### Package Image for Transfer
|
||||
|
||||
To package the Docker image for transfer to another computer:
|
||||
|
||||
```bash
|
||||
# Build and package the Docker image
|
||||
./package-docker.sh
|
||||
```
|
||||
|
||||
This will create a `aaf-systems-homepage-docker.tar` file that you can transfer to another computer.
|
||||
|
||||
### Transfer Methods
|
||||
|
||||
**Option 1: USB/External Drive**
|
||||
```bash
|
||||
# Copy the .tar file to USB drive
|
||||
cp aaf-systems-homepage-docker.tar /path/to/usb/drive/
|
||||
```
|
||||
|
||||
**Option 2: Network Transfer (SCP)**
|
||||
```bash
|
||||
# Transfer via SCP
|
||||
scp aaf-systems-homepage-docker.tar user@target-computer:/path/to/destination/
|
||||
```
|
||||
|
||||
**Option 3: Cloud Storage**
|
||||
Upload `aaf-systems-homepage-docker.tar` to your preferred cloud storage service.
|
||||
|
||||
### Load and Run on Target Computer
|
||||
|
||||
On the target computer:
|
||||
|
||||
1. Make sure Docker is installed and running
|
||||
2. Copy both files to the target computer:
|
||||
- `aaf-systems-homepage-docker.tar` (the image package)
|
||||
- `load-and-run-docker.sh` (the load script)
|
||||
3. Run the load script:
|
||||
|
||||
```bash
|
||||
# Load and run the Docker image
|
||||
./load-and-run-docker.sh
|
||||
```
|
||||
|
||||
The application will be available at `http://localhost:8080` on the target computer.
|
||||
|
||||
23
app/vite.config.ts
Normal file
23
app/vite.config.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { defineConfig } from 'vite'
|
||||
|
||||
export default defineConfig({
|
||||
base: './',
|
||||
build: {
|
||||
outDir: 'dist',
|
||||
assetsDir: 'assets',
|
||||
sourcemap: false,
|
||||
rollupOptions: {
|
||||
output: {
|
||||
manualChunks: undefined,
|
||||
},
|
||||
},
|
||||
},
|
||||
server: {
|
||||
host: '0.0.0.0',
|
||||
port: 8080,
|
||||
},
|
||||
preview: {
|
||||
host: '0.0.0.0',
|
||||
port: 8080,
|
||||
},
|
||||
})
|
||||
10
docker-compose.yml
Normal file
10
docker-compose.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
aaf-systems-homepage:
|
||||
build: .
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
restart: unless-stopped
|
||||
55
load-and-run-docker.sh
Executable file
55
load-and-run-docker.sh
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
# AAF Systems Homepage - Docker Load Script
|
||||
# This script loads and runs a packaged Docker image on the target computer
|
||||
|
||||
echo "🚀 AAF Systems Homepage Docker Load & Run"
|
||||
echo "========================================="
|
||||
|
||||
IMAGE_NAME="aaf-systems-homepage"
|
||||
PACKAGE_NAME="aaf-systems-homepage-docker.tar"
|
||||
CONTAINER_NAME="aaf-systems-homepage"
|
||||
|
||||
# Check if Docker is running
|
||||
if ! sudo docker info > /dev/null 2>&1; then
|
||||
echo "❌ Docker is not running. Please start Docker and try again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if package file exists
|
||||
if [ ! -f "$PACKAGE_NAME" ]; then
|
||||
echo "❌ Package file '$PACKAGE_NAME' not found in current directory"
|
||||
echo "Please make sure the .tar file is in the same directory as this script"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "📦 Loading Docker image from $PACKAGE_NAME..."
|
||||
sudo docker load -i $PACKAGE_NAME
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ Failed to load Docker image"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "🛑 Stopping any existing container..."
|
||||
sudo docker stop $CONTAINER_NAME 2>/dev/null || true
|
||||
sudo docker rm $CONTAINER_NAME 2>/dev/null || true
|
||||
|
||||
echo "🚀 Starting container on port 8080..."
|
||||
sudo docker run -d -p 8080:8080 --name $CONTAINER_NAME $IMAGE_NAME
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Container started successfully!"
|
||||
echo ""
|
||||
echo "🌐 Application is running at: http://localhost:8080"
|
||||
echo ""
|
||||
echo "📋 Useful Commands:"
|
||||
echo "=================="
|
||||
echo "View logs: sudo docker logs $CONTAINER_NAME"
|
||||
echo "Stop container: sudo docker stop $CONTAINER_NAME"
|
||||
echo "Remove container: sudo docker rm $CONTAINER_NAME"
|
||||
echo "Check status: sudo docker ps"
|
||||
else
|
||||
echo "❌ Failed to start container"
|
||||
exit 1
|
||||
fi
|
||||
46
package-docker.sh
Executable file
46
package-docker.sh
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
# AAF Systems Homepage - Docker Package Script
|
||||
# This script builds and packages the Docker image for transfer to another computer
|
||||
|
||||
echo "📦 AAF Systems Homepage Docker Packaging"
|
||||
echo "========================================"
|
||||
|
||||
IMAGE_NAME="aaf-systems-homepage"
|
||||
PACKAGE_NAME="aaf-systems-homepage-docker.tar"
|
||||
|
||||
# Check if Docker is running
|
||||
if ! sudo docker info > /dev/null 2>&1; then
|
||||
echo "❌ Docker is not running. Please start Docker and try again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "🔨 Building Docker image..."
|
||||
sudo docker build -t $IMAGE_NAME .
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ Failed to build Docker image"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "📦 Packaging Docker image to $PACKAGE_NAME..."
|
||||
sudo docker save -o $PACKAGE_NAME $IMAGE_NAME
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Docker image packaged successfully!"
|
||||
echo ""
|
||||
echo "📋 Transfer Instructions:"
|
||||
echo "========================"
|
||||
echo "1. Copy '$PACKAGE_NAME' to the target computer"
|
||||
echo "2. On the target computer, run:"
|
||||
echo " sudo docker load -i $PACKAGE_NAME"
|
||||
echo "3. Run the container:"
|
||||
echo " sudo docker run -p 8080:8080 --name aaf-systems-homepage $IMAGE_NAME"
|
||||
echo ""
|
||||
echo "📊 Package Info:"
|
||||
echo "==============="
|
||||
ls -lh $PACKAGE_NAME
|
||||
else
|
||||
echo "❌ Failed to package Docker image"
|
||||
exit 1
|
||||
fi
|
||||
36
run-docker.sh
Executable file
36
run-docker.sh
Executable file
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
|
||||
# AAF Systems Homepage - Docker Runner Script
|
||||
|
||||
echo "🚀 AAF Systems Homepage Docker Setup"
|
||||
echo "===================================="
|
||||
|
||||
# Check if Docker is running
|
||||
if ! sudo docker info > /dev/null 2>&1; then
|
||||
echo "❌ Docker is not running. Please start Docker Desktop and try again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to build and run with Docker Compose
|
||||
run_with_compose() {
|
||||
echo "🔨 Building and running with Docker Compose..."
|
||||
sudo docker-compose up --build
|
||||
}
|
||||
|
||||
# Function to build and run with Docker directly
|
||||
run_with_docker() {
|
||||
echo "🔨 Building Docker image..."
|
||||
sudo docker build -t aaf-systems-homepage .
|
||||
|
||||
echo "🚀 Running container on port 8080..."
|
||||
sudo docker run -p 8080:8080 --name aaf-systems-homepage aaf-systems-homepage
|
||||
}
|
||||
|
||||
# Check if docker-compose is available
|
||||
if command -v docker-compose &> /dev/null; then
|
||||
echo "📋 Docker Compose detected. Using docker-compose.yml..."
|
||||
run_with_compose
|
||||
else
|
||||
echo "📋 Docker Compose not found. Using Docker directly..."
|
||||
run_with_docker
|
||||
fi
|
||||
21
stop-docker.sh
Executable file
21
stop-docker.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
# AAF Systems Homepage - Docker Stop Script
|
||||
|
||||
echo "🛑 Stopping AAF Systems Homepage Docker Container"
|
||||
echo "================================================"
|
||||
|
||||
# Stop and remove the container
|
||||
echo "🔍 Stopping container..."
|
||||
sudo docker stop aaf-systems-homepage 2>/dev/null || echo "Container not running"
|
||||
|
||||
echo "🗑️ Removing container..."
|
||||
sudo docker rm aaf-systems-homepage 2>/dev/null || echo "Container not found"
|
||||
|
||||
# If using docker-compose, stop that too
|
||||
if command -v docker-compose &> /dev/null; then
|
||||
echo "🔍 Stopping docker-compose services..."
|
||||
sudo docker-compose down 2>/dev/null || echo "No docker-compose services running"
|
||||
fi
|
||||
|
||||
echo "✅ Cleanup complete!"
|
||||
Reference in New Issue
Block a user