File size: 2,047 Bytes
0810b27
 
 
896066b
def34fb
9dea8c4
e0d0dc1
9dea8c4
 
1312ca7
faf444e
 
 
e0d0dc1
177ae5a
 
 
 
 
 
e0d0dc1
bccdea1
 
 
 
 
 
 
 
 
 
 
7f0b93d
bccdea1
 
2deb5fc
177ae5a
bccdea1
 
0810b27
bccdea1
 
0430395
bccdea1
 
 
 
0810b27
a398433
bccdea1
 
ed67e70
0810b27
0430395
 
 
 
 
 
 
faf444e
 
 
 
 
bccdea1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# This builds a dockerfile containing a working copy of PySR
# with all pre-requisites installed.

ARG JLVERSION=1.10.0
ARG PYVERSION=3.11.6
ARG BASE_IMAGE=bullseye

FROM julia:${JLVERSION}-${BASE_IMAGE} AS jl
FROM python:${PYVERSION}-${BASE_IMAGE}

# Merge Julia image:
COPY --from=jl /usr/local/julia /usr/local/julia
ENV PATH="/usr/local/julia/bin:${PATH}"

# Install font used for GUI
RUN mkdir -p /usr/local/share/fonts/IBM_Plex_Mono && \
    curl -L https://github.com/IBM/plex/releases/download/v6.4.0/IBM-Plex-Mono.zip -o /tmp/IBM_Plex_Mono.zip && \
    unzip /tmp/IBM_Plex_Mono.zip -d /usr/local/share/fonts/IBM_Plex_Mono && \
    rm /tmp/IBM_Plex_Mono.zip
RUN fc-cache -f -v

# Set up a new user named "user" with user ID 1000
RUN useradd -m -u 1000 user
USER user
WORKDIR /home/user/
ENV HOME=/home/user
ENV PATH=/home/user/.local/bin:$PATH

RUN python -m venv $HOME/.venv

ENV PYTHON="${HOME}/.venv/bin/python"
ENV PIP="${PYTHON} -m pip"
ENV PATH="${HOME}/.venv/bin:${PATH}"

WORKDIR $HOME/pysr

# Install all requirements, and then PySR itself
COPY --chown=user ./requirements.txt $HOME/pysr/requirements.txt
RUN $PIP install --no-cache-dir -r $HOME/pysr/requirements.txt

COPY --chown=user ./gui/requirements.txt $HOME/pysr/gui/requirements.txt
RUN $PIP install --no-cache-dir -r $HOME/pysr/gui/requirements.txt

COPY --chown=user ./pyproject.toml $HOME/pysr/pyproject.toml
COPY --chown=user ./setup.py $HOME/pysr/setup.py
COPY --chown=user ./pysr $HOME/pysr/pysr
RUN $PIP install --no-cache-dir .

# Install Julia pre-requisites:
RUN $PYTHON -c 'import pysr'

COPY --chown=user ./gui/*.py $HOME/pysr/gui/

EXPOSE 7860
ENV GRADIO_ALLOW_FLAGGING=never \
	GRADIO_NUM_PORTS=1 \
	GRADIO_SERVER_NAME=0.0.0.0 \
	GRADIO_THEME=huggingface \
	SYSTEM=spaces

# metainformation
LABEL org.opencontainers.image.authors = "Miles Cranmer"
LABEL org.opencontainers.image.source = "https://github.com/MilesCranmer/PySR"
LABEL org.opencontainers.image.licenses = "Apache License 2.0"

CMD ["/home/user/.venv/bin/python", "/home/user/pysr/gui/app.py"]