-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathDockerfile
108 lines (89 loc) · 3.16 KB
/
Dockerfile
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
ARG PYTHON_VERSION=3.10
ARG POETRY_VERSION=1.7.1
FROM python:$PYTHON_VERSION-slim AS builder
ARG POETRY_VERSION
ENV POETRY_HOME=/opt/poetry
ENV POETRY_VENV=/opt/poetry-venv
ENV POETRY_CACHE_DIR=/opt/.cache
# Install poetry separated from system interpreter
RUN python3 -m venv $POETRY_VENV \
&& $POETRY_VENV/bin/pip install -U pip setuptools \
&& $POETRY_VENV/bin/pip install poetry==${POETRY_VERSION}
# Add `poetry` to PATH
ENV PATH="${PATH}:${POETRY_VENV}/bin"
WORKDIR /src
COPY poetry.lock pyproject.toml /src/
RUN poetry export -E eflomal --without-hashes -f requirements.txt > requirements.txt
COPY . /src
RUN poetry build
FROM ubuntu:22.04
ARG PYTHON_VERSION=3.10
ENV PIP_DISABLE_PIP_VERSION_CHECK=on
ENV TZ=America/New_York
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /root
# Install apt packages
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install --no-install-recommends -y \
git \
python$PYTHON_VERSION \
python3-pip \
python3-dev \
wget \
build-essential \
gdb \
curl \
unzip \
nano \
cmake \
tar \
&& rm -rf /var/lib/apt/lists/* \
&& apt-get clean
# Make some useful symlinks that are expected to exist
RUN ln -sfn /usr/bin/python${PYTHON_VERSION} /usr/bin/python3 & \
ln -sfn /usr/bin/python${PYTHON_VERSION} /usr/bin/python
# Install dependencies from poetry
COPY --from=builder /src/requirements.txt .
RUN pip install -r requirements.txt && rm requirements.txt
# Set eflomal path
ENV EFLOMAL_PATH=/usr/local/lib/python3.10/dist-packages/eflomal/bin
# Install fast_align
RUN apt-get update && \
apt-get install --no-install-recommends -y libgoogle-perftools-dev libsparsehash-dev
RUN git clone https://github.com/clab/fast_align.git
RUN mkdir fast_align/build
RUN cmake -S fast_align -B fast_align/build
RUN make -C fast_align/build
RUN mv fast_align/build/atools fast_align/build/fast_align /usr/local/bin
RUN rm -rf fast_align
ENV FAST_ALIGN_PATH=/usr/local/bin
# Install mgiza
RUN apt-get install --no-install-recommends -y libboost-all-dev
RUN git clone https://github.com/moses-smt/mgiza.git
RUN cmake -S mgiza/mgizapp -B mgiza/mgizapp
RUN make -C mgiza/mgizapp
RUN make -C mgiza/mgizapp install
RUN mv mgiza/mgizapp/inst/mgiza mgiza/mgizapp/inst/mkcls mgiza/mgizapp/inst/plain2snt mgiza/mgizapp/inst/snt2cooc /usr/local/bin
RUN rm -rf mgiza
ENV MGIZA_PATH=/usr/local/bin
# Install meteor
RUN wget "https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz"
RUN tar -xf jdk-21_linux-x64_bin.tar.gz
RUN rm jdk-21_linux-x64_bin.tar.gz
RUN wget "http://www.cs.cmu.edu/~alavie/METEOR/download/meteor-1.5.tar.gz"
RUN tar -xf meteor-1.5.tar.gz
RUN rm meteor-1.5.tar.gz
RUN mv meteor-1.5/meteor-1.5.jar /usr/local/bin
RUN rm -rf meteor-1.5
ENV METEOR_PATH=/usr/local/bin
# Create caches
RUN mkdir -p .cache/silnlp/experiments
RUN mkdir .cache/silnlp/projects
ENV SIL_NLP_CACHE_EXPERIMENT_DIR=/root/.cache/silnlp/experiments
ENV SIL_NLP_CACHE_PROJECT_DIR=/root/.cache/silnlp/projects
# Clone silnlp and make it the starting directory
RUN git clone https://github.com/sillsdev/silnlp.git
WORKDIR /root/silnlp
# Default docker run behavior
CMD [ "/bin/bash", "-it" ]