96 lines
2.4 KiB
Docker
96 lines
2.4 KiB
Docker
#######################
|
|
## Build Webserver ##
|
|
#######################
|
|
|
|
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build-Webserver
|
|
WORKDIR /WebServer
|
|
|
|
# Copy the csproj
|
|
COPY ./WebServer/WebServer.csproj ./
|
|
|
|
# Restore the Server
|
|
RUN dotnet restore './WebServer.csproj'
|
|
|
|
# Copy the rest of the backend over
|
|
COPY ./WebServer ./
|
|
|
|
# Build the source
|
|
RUN dotnet publish './WebServer.csproj' -c Release -o /app/publish
|
|
|
|
################
|
|
## Publish ##
|
|
################
|
|
|
|
FROM mcr.microsoft.com/dotnet/aspnet:9.0
|
|
|
|
# Pull in required libraries to build python from source
|
|
RUN apt update && apt upgrade -y && apt install -y \
|
|
build-essential \
|
|
zlib1g-dev \
|
|
libncurses5-dev \
|
|
libgdbm-dev \
|
|
libnss3-dev \
|
|
libssl-dev \
|
|
libreadline-dev \
|
|
libffi-dev \
|
|
libsqlite3-dev \
|
|
libbz2-dev \
|
|
wget \
|
|
ca-certificates \
|
|
cron \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Download, extract, configure, and compile python 3.11
|
|
# Use Hardlinks and altinstall to not break system components that rely on the builtin python
|
|
RUN wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz && \
|
|
tar -xf Python-3.11.0.tgz && \
|
|
cd Python-3.11.0 && \
|
|
./configure --enable-optimizations --enable-shared && \
|
|
make -j$(nproc) && \
|
|
make altinstall && \
|
|
# Cleanup
|
|
cd .. && \
|
|
rm -rf Python-3.11.0.tgz Python-3.11.0 && \
|
|
# Tell the system where the new .so files are
|
|
echo "/usr/local/lib" > /etc/ld.so.conf.d/python311.conf && \
|
|
ldconfig && \
|
|
# Create symlinks
|
|
ln -s /usr/local/bin/python3.11 /usr/local/bin/python && \
|
|
ln -s /usr/local/bin/pip3.11 /usr/local/bin/pip
|
|
|
|
RUN pip install --upgrade pip && \
|
|
pip install tensorflow \
|
|
fastparquet \
|
|
openpyxl \
|
|
yfinance
|
|
|
|
WORKDIR /app
|
|
|
|
ENV ASPNETCORE_HTTP_PORTS=5000
|
|
ENV StripeKey=null
|
|
ENV MySQLServer=null
|
|
ENV MySQLUser=null
|
|
ENV MySQLPass=null
|
|
ENV MySQLDatabase=Mistox
|
|
|
|
EXPOSE 5000
|
|
|
|
# Copy in the webserver
|
|
COPY --from=build-Webserver /app/publish ./
|
|
|
|
# Copy in cronjob
|
|
COPY crontab.txt /etc/cron.d/reload-finance-history
|
|
|
|
# Copy in EntryPoint
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
|
|
# Give execution rights on the cronjob and entrypoint
|
|
RUN chmod 0644 /etc/cron.d/reload-finance-history && \
|
|
chmod +x /entrypoint.sh && \
|
|
touch /var/log/cron.log
|
|
|
|
# Apply the cron job
|
|
RUN crontab /etc/cron.d/reload-finance-history
|
|
|
|
# Start the container
|
|
ENTRYPOINT ["/entrypoint.sh"] |