feat: Add Dockerfile and simplify install script

- Add a Dockerfile for easy building and running of the application.
- Simplify the install.sh script by removing unnecessary steps and
  hardcoded values.  The installation of Tailwind CSS and Shadcn UI
  is now handled within the application.  This allows for greater
  flexibility and simplifies the process.
- Use environment variables for HOST and PORT, providing defaults.
This commit is contained in:
Mahmoud Emad 2025-05-11 17:59:50 +03:00
parent 486b5ceb05
commit e2eb77c3b9
3 changed files with 66 additions and 41 deletions

24
Dockerfile Normal file
View File

@ -0,0 +1,24 @@
# Use a base image with Bun
FROM oven/bun:latest
# Set working directory
WORKDIR /app
# Copy the entire project
COPY . .
# Make the scripts executable
RUN chmod +x install.sh run.sh
# Run the install script to set up dependencies
RUN ./install.sh
# Set environment variables with defaults
ENV HOST=0.0.0.0
ENV PORT=3000
# Expose the port
EXPOSE ${PORT}
# Run the application
CMD ["./run.sh"]

View File

@ -15,54 +15,51 @@ else
echo "Bun is already installed." echo "Bun is already installed."
fi fi
# Install Svelte with Bun and Vite # Change into the existing app directory
echo "Installing Svelte with Bun and Vite..." echo "Changing to the sweb directory..."
bun create vite sweb --template svelte-ts
# Change into the new app directory
cd sweb cd sweb
# Install dependencies # Install dependencies
bun install bun install
# Install Tailwind CSS and dependencies # # Install Tailwind CSS and dependencies
echo "Installing Tailwind CSS and dependencies..." # echo "Installing Tailwind CSS and dependencies..."
bun add -D tailwindcss postcss autoprefixer # bun add -D tailwindcss postcss autoprefixer
# Initialize Tailwind CSS # # Initialize Tailwind CSS
echo "Initializing Tailwind CSS..." # echo "Initializing Tailwind CSS..."
bunx tailwindcss init -p # bunx tailwindcss init -p
# Configure Tailwind CSS # # Configure Tailwind CSS
echo "Configuring Tailwind CSS..." # echo "Configuring Tailwind CSS..."
# Modify tailwind.config.js # # Modify tailwind.config.js
cat << EOF > tailwind.config.js # cat << EOF > tailwind.config.js
/** @type {import('tailwindcss').Config} */ # /** @type {import('tailwindcss').Config} */
export default { # export default {
content: [ # content: [
'./src/**/*.{html,js,svelte,ts}', # './src/**/*.{html,js,svelte,ts}',
], # ],
theme: { # theme: {
extend: {}, # extend: {},
}, # },
plugins: [], # plugins: [],
} # }
EOF # EOF
# Add Tailwind directives to app.css # # Add Tailwind directives to app.css
echo "Adding Tailwind directives to app.css..." # echo "Adding Tailwind directives to app.css..."
cat << EOF > src/app.css # cat << EOF > src/app.css
@tailwind base; # @tailwind base;
@tailwind components; # @tailwind components;
@tailwind utilities; # @tailwind utilities;
$(cat src/app.css) # $(cat src/app.css)
EOF # EOF
# Install Shadcn for Svelte # # Install Shadcn for Svelte
echo "Installing Shadcn for Svelte..." # echo "Installing Shadcn for Svelte..."
bun install lucide-svelte # bun install lucide-svelte
# Attempting to run Shadcn Svelte init non-interactively by providing the components alias. # # Attempting to run Shadcn Svelte init non-interactively by providing the components alias.
bunx shadcn-svelte init --style default --base-color slate --css src/app.css --tailwind-config tailwind.config.js --components-alias '$lib/components/ui' # bunx shadcn-svelte init --style default --base-color slate --css src/app.css --tailwind-config tailwind.config.js --components-alias '$lib/components/ui'

8
run.sh
View File

@ -1,7 +1,11 @@
#!/bin/bash #!/bin/bash
# Set default values for HOST and PORT if not provided
HOST=${HOST:-0.0.0.0}
PORT=${PORT:-3000}
# Change to the Svelte app directory # Change to the Svelte app directory
cd sweb cd sweb
# Run the development server # Run the development server with the specified host and port
bun run dev bun run dev -- --host $HOST --port $PORT