1+ # hadolint global ignore=DL3013,DL3018
2+ FROM python:3.13-slim
3+
4+ ENV ROBOT_HOME=/opt/robot \
5+ PYTHONPATH=/usr/local/lib/python3.13/site-packages/integration_library_builtIn \
6+ IS_ANALYZER_RESULT_ENABLED=true \
7+ IS_TAGS_RESOLVER_ENABLED=true \
8+ STATUS_WRITING_ENABLED=false \
9+ USER_ID=1000 \
10+ GROUP_ID=1000
11+
12+ COPY scripts/docker-entrypoint.sh /
13+ COPY scripts/*.py ${ROBOT_HOME}/
14+ COPY scripts/adapter-S3 ${ROBOT_HOME}/scripts/adapter-S3
15+ COPY requirements.txt ${ROBOT_HOME}/requirements.txt
16+ COPY library ${ROBOT_HOME}/integration-tests-built-in-library
17+
18+ RUN \
19+ # Install dependencies
20+ apt-get update \
21+ && apt-get install -y --no-install-recommends \
22+ bash \
23+ passwd \
24+ vim \
25+ rsync \
26+ curl \
27+ build-essential \
28+ python3-yaml \
29+ ca-certificates \
30+ inotify-tools \
31+ # Clean up
32+ && rm -rf /var/lib/apt/lists/*
33+
34+ RUN \
35+ # Install s5cmd
36+ curl -L https://github.com/peak/s5cmd/releases/latest/download/s5cmd_linux_amd64.tar.gz \
37+ | tar -xz \
38+ && mv s5cmd /usr/local/bin/s5cmd
39+
40+ RUN \
41+ # Add an unprivileged user
42+ groupadd -r robot --gid=${GROUP_ID} \
43+ && useradd -s /bin/bash -r -g robot --uid=${USER_ID} robot \
44+ && usermod -a -G 0 robot \
45+ # Install dependencies
46+ && python3 -m pip install --no-cache-dir --upgrade \
47+ pip \
48+ setuptools \
49+ && python3 -m pip install --no-cache-dir -r ${ROBOT_HOME}/requirements.txt \
50+ && python3 -m pip install --no-cache-dir ${ROBOT_HOME}/integration-tests-built-in-library \
51+ # Clean up
52+ && rm -rf ${ROBOT_HOME}/integration-tests-built-in-library \
53+ # Create output directory
54+ && mkdir -p ${ROBOT_HOME}/output \
55+ # Set permissions
56+ && chmod +x /docker-entrypoint.sh \
57+ && chmod -R 775 ${ROBOT_HOME} \
58+ && chown -R ${USER_ID}:0 ${ROBOT_HOME} \
59+ && chgrp -R 0 ${ROBOT_HOME} \
60+ && chgrp 0 /docker-entrypoint.sh
61+
62+ WORKDIR ${ROBOT_HOME}
63+
64+ ENTRYPOINT ["/docker-entrypoint.sh" ]
65+ CMD ["run-robot" ]
0 commit comments