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."
fi
# Install Svelte with Bun and Vite
echo "Installing Svelte with Bun and Vite..."
bun create vite sweb --template svelte-ts
# Change into the new app directory
# Change into the existing app directory
echo "Changing to the sweb directory..."
cd sweb
# Install dependencies
bun install
# Install Tailwind CSS and dependencies
echo "Installing Tailwind CSS and dependencies..."
bun add -D tailwindcss postcss autoprefixer
# # Install Tailwind CSS and dependencies
# echo "Installing Tailwind CSS and dependencies..."
# bun add -D tailwindcss postcss autoprefixer
# Initialize Tailwind CSS
echo "Initializing Tailwind CSS..."
bunx tailwindcss init -p
# # Initialize Tailwind CSS
# echo "Initializing Tailwind CSS..."
# bunx tailwindcss init -p
# Configure Tailwind CSS
echo "Configuring Tailwind CSS..."
# Modify tailwind.config.js
cat << EOF > tailwind.config.js
/** @type {import('tailwindcss').Config} */
export default {
content: [
'./src/**/*.{html,js,svelte,ts}',
],
theme: {
extend: {},
},
plugins: [],
}
EOF
# # Configure Tailwind CSS
# echo "Configuring Tailwind CSS..."
# # Modify tailwind.config.js
# cat << EOF > tailwind.config.js
# /** @type {import('tailwindcss').Config} */
# export default {
# content: [
# './src/**/*.{html,js,svelte,ts}',
# ],
# theme: {
# extend: {},
# },
# plugins: [],
# }
# EOF
# Add Tailwind directives to app.css
echo "Adding Tailwind directives to app.css..."
cat << EOF > src/app.css
@tailwind base;
@tailwind components;
@tailwind utilities;
# # Add Tailwind directives to app.css
# echo "Adding Tailwind directives to app.css..."
# cat << EOF > src/app.css
# @tailwind base;
# @tailwind components;
# @tailwind utilities;
$(cat src/app.css)
EOF
# $(cat src/app.css)
# EOF
# Install Shadcn for Svelte
echo "Installing Shadcn for Svelte..."
bun install lucide-svelte
# 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'
# # Install Shadcn for Svelte
# echo "Installing Shadcn for Svelte..."
# bun install lucide-svelte
# # 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'

8
run.sh
View File

@ -1,7 +1,11 @@
#!/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
cd sweb
# Run the development server
bun run dev
# Run the development server with the specified host and port
bun run dev -- --host $HOST --port $PORT