Getting started Guides and Dockerfile, setup.py, and install.bat
This commit is contained in:
@@ -1,23 +1,18 @@
|
|||||||
# =====================================================================
|
# =====================================================================
|
||||||
# ALwrity Automated Dockerfile - Zero Manual Steps for End Users
|
# ALwrity Automated Dockerfile - Best Practices & Full Functionality
|
||||||
# =====================================================================
|
# =====================================================================
|
||||||
# This Dockerfile will automatically:
|
# This Dockerfile is designed for cache efficiency, security, and ease of use.
|
||||||
# 1. Use Python 3.11
|
# It uses multi-stage builds for smaller images and leverages Docker layer caching.
|
||||||
# 2. Install all system dependencies (build tools, Rust, etc.)
|
|
||||||
# 3. Clone the latest ALwrity code from GitHub
|
|
||||||
# 4. Install Python dependencies
|
|
||||||
# 5. Set up a non-root user
|
|
||||||
# 6. Expose Streamlit port and run the app
|
|
||||||
# =====================================================================
|
# =====================================================================
|
||||||
|
|
||||||
# 1. Use official Python 3.11 image
|
# 1. Use official Python 3.11 image (builder stage)
|
||||||
FROM python:3.11-slim as base
|
FROM python:3.11-slim AS builder
|
||||||
|
|
||||||
# 2. Set environment variables for Python
|
# 2. Set environment variables for Python
|
||||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||||
PYTHONUNBUFFERED=1
|
PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
# 3. Install system dependencies
|
# 3. Install build dependencies first (for cache efficiency)
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
build-essential \
|
build-essential \
|
||||||
@@ -25,7 +20,6 @@ RUN apt-get update && \
|
|||||||
git \
|
git \
|
||||||
curl \
|
curl \
|
||||||
wget \
|
wget \
|
||||||
nano \
|
|
||||||
libffi-dev \
|
libffi-dev \
|
||||||
libssl-dev \
|
libssl-dev \
|
||||||
rustc \
|
rustc \
|
||||||
@@ -35,24 +29,41 @@ RUN apt-get update && \
|
|||||||
# 4. Set work directory
|
# 4. Set work directory
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# 5. Clone the latest ALwrity code from GitHub
|
# 5. Copy only requirements.txt first (for better caching)
|
||||||
RUN git clone https://github.com/AJaySi/AI-Writer.git .
|
COPY ../../requirements.txt ./
|
||||||
|
|
||||||
# 6. Install Python dependencies
|
# 6. Install Python dependencies in builder
|
||||||
RUN pip install --upgrade pip && \
|
RUN pip install --upgrade pip && \
|
||||||
pip install --no-cache-dir -r requirements.txt
|
pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
# 7. Create a non-root user for security
|
# 7. Clone the latest ALwrity code from GitHub (after dependencies for cache efficiency)
|
||||||
|
RUN git clone https://github.com/AJaySi/AI-Writer.git .
|
||||||
|
|
||||||
|
# 8. Copy only necessary files to the final image (runtime stage)
|
||||||
|
FROM python:3.11-slim AS runtime
|
||||||
|
|
||||||
|
# 9. Set environment variables for Python
|
||||||
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||||
|
PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
|
# 10. Create a non-root user for security
|
||||||
RUN useradd -m alwrityuser
|
RUN useradd -m alwrityuser
|
||||||
USER alwrityuser
|
USER alwrityuser
|
||||||
|
|
||||||
# 8. Expose Streamlit's default port
|
# 11. Set work directory
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 12. Copy installed packages and app from builder
|
||||||
|
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
|
||||||
|
COPY --from=builder /app /app
|
||||||
|
|
||||||
|
# 13. Expose Streamlit's default port
|
||||||
EXPOSE 8501
|
EXPOSE 8501
|
||||||
|
|
||||||
# 9. Set environment variable for Streamlit (optional: disables telemetry)
|
# 14. Set environment variable for Streamlit (optional: disables telemetry)
|
||||||
ENV STREAMLIT_TELEMETRY=0
|
ENV STREAMLIT_TELEMETRY=0
|
||||||
|
|
||||||
# 10. Default command: run ALwrity with Streamlit
|
# 15. Default command: run ALwrity with Streamlit
|
||||||
CMD ["streamlit", "run", "alwrity.py", "--server.port=8501", "--server.address=0.0.0.0"]
|
CMD ["streamlit", "run", "alwrity.py", "--server.port=8501", "--server.address=0.0.0.0"]
|
||||||
|
|
||||||
# =====================================================================
|
# =====================================================================
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
@echo off
|
|
||||||
echo Welcome to ALwrity Installer
|
|
||||||
echo ============================
|
|
||||||
echo.
|
|
||||||
|
|
||||||
:: Check if Python 3.11 is installed
|
|
||||||
python --version 2>nul | findstr /i "3.11" >nul
|
|
||||||
if errorlevel 1 (
|
|
||||||
echo Python 3.11 is not installed or not in PATH
|
|
||||||
echo Please install Python 3.11 from https://www.python.org/downloads/release/python-3116/
|
|
||||||
echo Make sure to check "Add Python 3.11 to PATH" during installation
|
|
||||||
echo.
|
|
||||||
echo Press any key to open the download page...
|
|
||||||
pause >nul
|
|
||||||
start https://www.python.org/downloads/release/python-3116/
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Create virtual environment if it doesn't exist
|
|
||||||
if not exist "venv" (
|
|
||||||
echo Creating virtual environment...
|
|
||||||
python -m venv venv
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Activate virtual environment and install requirements
|
|
||||||
echo Activating virtual environment...
|
|
||||||
call venv\Scripts\activate.bat
|
|
||||||
|
|
||||||
echo Upgrading pip...
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
|
|
||||||
echo Installing ALwrity...
|
|
||||||
python setup.py install
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo Installation complete!
|
|
||||||
echo To start ALwrity, open a new command prompt and type: alwrity
|
|
||||||
echo.
|
|
||||||
pause
|
|
||||||
Reference in New Issue
Block a user