60 lines
2.3 KiB
Docker
Executable File
60 lines
2.3 KiB
Docker
Executable File
# Dockerfile for the LIBERO benchmark.
|
|
|
|
# Build the container:
|
|
# docker build . -t libero -f examples/libero/Dockerfile
|
|
|
|
# Run the container:
|
|
# docker run --rm -it --network=host -v .:/app -v /tmp/.X11-unix:/tmp/.X11-unix:ro -e DISPLAY=$DISPLAY --gpus all libero /bin/bash
|
|
|
|
FROM nvidia/cuda:12.2.2-cudnn8-runtime-ubuntu22.04@sha256:2d913b09e6be8387e1a10976933642c73c840c0b735f0bf3c28d97fc9bc422e0
|
|
COPY --from=ghcr.io/astral-sh/uv:0.5.1 /uv /uvx /bin/
|
|
|
|
RUN apt-get update && \
|
|
apt-get install -y \
|
|
make \
|
|
g++ \
|
|
clang \
|
|
libosmesa6-dev \
|
|
libgl1-mesa-glx \
|
|
libglew-dev \
|
|
libglfw3-dev \
|
|
libgles2-mesa-dev \
|
|
libglib2.0-0 \
|
|
libsm6 \
|
|
libxrender1 \
|
|
libxext6
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy from the cache instead of linking since it's a mounted volume
|
|
ENV UV_LINK_MODE=copy
|
|
|
|
# Write the virtual environment outside of the project directory so it doesn't
|
|
# leak out of the container when we mount the application code.
|
|
ENV UV_PROJECT_ENVIRONMENT=/.venv
|
|
|
|
# Copy the requirements files so we can install dependencies.
|
|
# The rest of the project is mounted as a volume, so we don't need to rebuild on changes.
|
|
# This strategy is best for development-style usage.
|
|
COPY ./examples/libero/requirements.txt /tmp/requirements.txt
|
|
COPY ./third_party/libero/requirements.txt /tmp/requirements-libero.txt
|
|
COPY ./packages/openpi-client/pyproject.toml /tmp/openpi-client/pyproject.toml
|
|
|
|
# Install python dependencies.
|
|
RUN uv venv --python 3.8 $UV_PROJECT_ENVIRONMENT
|
|
RUN uv pip sync /tmp/requirements.txt /tmp/requirements-libero.txt /tmp/openpi-client/pyproject.toml --extra-index-url https://download.pytorch.org/whl/cu113 --index-strategy=unsafe-best-match
|
|
ENV PYTHONPATH=/app:/app/packages/openpi-client/src:/app/third_party/libero
|
|
|
|
# Create a default config file to avoid an input prompt from LIBERO's init script.
|
|
# https://github.com/Lifelong-Robot-Learning/LIBERO/blob/master/libero/libero/__init__.py
|
|
ENV LIBERO_CONFIG_PATH=/tmp/libero
|
|
RUN mkdir -p /tmp/libero && cat <<'EOF' > /tmp/libero/config.yaml
|
|
benchmark_root: /app/third_party/libero/libero/libero
|
|
bddl_files: /app/third_party/libero/libero/libero/bddl_files
|
|
init_states: /app/third_party/libero/libero/libero/init_files
|
|
datasets: /app/third_party/libero/libero/datasets
|
|
assets: /app/third_party/libero/libero/libero/assets
|
|
EOF
|
|
|
|
CMD ["/bin/bash", "-c", "source /.venv/bin/activate && python examples/libero/main.py"]
|