FROM python:3.11 as requirements-stage WORKDIR /tmp RUN pip install poetry RUN poetry self add poetry-plugin-export COPY ./pyproject.toml /tmp/pyproject.toml COPY ./poetry.lock /tmp/poetry.lock RUN poetry export -f requirements.txt --output requirements.txt --without-hashes FROM python:3.11-slim-bookworm WORKDIR /app COPY --from=requirements-stage /tmp/requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade -r requirements.txt RUN playwright install-deps RUN playwright install RUN apt-get install -y xauth x11-apps netpbm curl && apt-get clean # nvm env vars RUN mkdir -p /usr/local/nvm ENV NVM_DIR /usr/local/nvm ENV NODE_VERSION v20.12.2 # install nvm RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # install node and npm RUN /bin/bash -c "source $NVM_DIR/nvm.sh && nvm install $NODE_VERSION && nvm use --delete-prefix $NODE_VERSION" # add node and npm to the PATH ENV NODE_PATH $NVM_DIR/versions/node/$NODE_VERSION/bin ENV PATH $NODE_PATH:$PATH # confirm installation RUN npm -v RUN node -v # install bitwarden cli RUN npm install -g @bitwarden/cli@2024.9.0 # checking bw version also initializes the bw config RUN bw --version COPY . /app ENV PYTHONPATH="/app:$PYTHONPATH" ENV VIDEO_PATH=/data/videos ENV HAR_PATH=/data/har ENV LOG_PATH=/data/log ENV ARTIFACT_STORAGE_PATH=/data/artifacts COPY ./entrypoint-skyvern.sh /app/entrypoint-skyvern.sh RUN chmod +x /app/entrypoint-skyvern.sh CMD [ "/bin/bash", "/app/entrypoint-skyvern.sh" ]