Skip to content

Commit

Permalink
Sample Docker Push Action
Browse files Browse the repository at this point in the history
  • Loading branch information
gs-olive committed Jul 24, 2023
1 parent 6920876 commit 9901466
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 26 deletions.
80 changes: 80 additions & 0 deletions .github/workflows/docker_builder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# name: 'Torch-TRT Docker'

# on:
# pull_request:
# types: [opened, synchronize, ready_for_review, review_requested, reopened]

# ##### Adapted from https://docs.github.com/en/actions/publishing-packages/publishing-docker-images

# # Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
# env:
# REGISTRY: ghcr.io
# IMAGE_NAME: ${{ github.repository }}

# # There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
# jobs:
# build-and-push-image:
# runs-on: ubuntu-latest
# # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
# permissions:
# contents: read
# packages: write
# steps:
# - name: Checkout repository
# uses: actions/checkout@v3
# # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
# - name: Log in to the Container registry
# uses: docker/login-action@v2
# with:
# registry: ${{ env.REGISTRY }}
# username: ${{ github.actor }}
# password: ${{ secrets.GITHUB_TOKEN }}

# - name: Reclaim space
# run: |
# rm -rf /usr/share/dotnet
# rm -rf /opt/ghc
# rm -rf "/usr/local/share/boost"
# rm -rf /usr/local/cuda/cuda-*

# - name: ssh
# uses: appleboy/ssh-action@master
# with:
# host: ${{ secrets.HOST }}
# username: ${{ secrets.USERNAME }}
# password: ${{ secrets.PASSWORD }}
# port: ${{ secrets.PORT }}

# # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
# # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
# # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
# - name: Build and push Docker image
# uses: docker/build-push-action@v4
# with:
# context: .
# push: true
# tags: torch_tensorrt:main
# file: docker/Dockerfile
# build-args: |
# TENSORRT_VERSION=8.6
# CUDNN_VERSION=8.8
# shm-size: 4g


name: 'Torch-TRT Docker'

on:
pull_request:
types: [opened, synchronize, ready_for_review, review_requested, reopened]

jobs:

build:

runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Build the Docker image
run: DOCKER_BUILDKIT=1 docker build --build-arg TENSORRT_VERSION=8.6 --build-arg CUDNN_VERSION=8.8 -f docker/Dockerfile --tag torch_tensorrt_main:$(date +%s) .
56 changes: 32 additions & 24 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -77,38 +77,46 @@ RUN cp ./docker/WORKSPACE.docker WORKSPACE
RUN mkdir -p "/opt/python3/" &&\
ln -s "`pyenv which python | xargs dirname | xargs dirname`/lib/python$PYTHON_VERSION/site-packages" "/opt/python3/"

# Extract base image cuda version (everything after :, before -, before final ., in BASE_IMG)
# Ensure the default cuda folder agrees with the version in the base image
RUN CUDA_BASE_IMG_VERSION_INTERMEDIATE=`echo ${BASE_IMG#*:}` &&\
CUDA_BASE_IMG_VERSION=`echo ${CUDA_BASE_IMG_VERSION_INTERMEDIATE%%-*}` &&\
CUDA_MAJOR_MINOR_VERSION=`echo ${CUDA_BASE_IMG_VERSION%.*}` &&\
rm -fr /usr/local/cuda &&\
ln -s /usr/local/cuda-${CUDA_MAJOR_MINOR_VERSION} /usr/local/cuda
RUN rm -rf /usr/share/dotnet
RUN rm -rf /opt/ghc
RUN rm -rf "/usr/local/share/boost"
RUN rm -rf /usr/local/cuda/cuda-*
RUN apt-get clean

ENV CUDA_HOME=/usr/local/cuda
RUN pip install tensorrt

# This script builds both libtorchtrt bin/lib/include tarball and the Python wheel, in dist/
RUN bash ./docker/dist-build.sh
# # Extract base image cuda version (everything after :, before -, before final ., in BASE_IMG)
# # Ensure the default cuda folder agrees with the version in the base image
# RUN CUDA_BASE_IMG_VERSION_INTERMEDIATE=`echo ${BASE_IMG#*:}` &&\
# CUDA_BASE_IMG_VERSION=`echo ${CUDA_BASE_IMG_VERSION_INTERMEDIATE%%-*}` &&\
# CUDA_MAJOR_MINOR_VERSION=`echo ${CUDA_BASE_IMG_VERSION%.*}` &&\
# rm -fr /usr/local/cuda &&\
# ln -s /usr/local/cuda-${CUDA_MAJOR_MINOR_VERSION} /usr/local/cuda

# Copy and install Torch-TRT into the main container
FROM base as torch-tensorrt
# ENV CUDA_HOME=/usr/local/cuda

COPY . /opt/torch_tensorrt
# # This script builds both libtorchtrt bin/lib/include tarball and the Python wheel, in dist/
# RUN bash ./docker/dist-build.sh

# Symlink the path pyenv is using for python with the /opt directory for package sourcing
RUN mkdir -p "/opt/python3/" &&\
ln -s "`pyenv which python | xargs dirname | xargs dirname`/lib/python$PYTHON_VERSION/site-packages" "/opt/python3/"
# # Copy and install Torch-TRT into the main container
# FROM base as torch-tensorrt

# COPY . /opt/torch_tensorrt

# # Symlink the path pyenv is using for python with the /opt directory for package sourcing
# RUN mkdir -p "/opt/python3/" &&\
# ln -s "`pyenv which python | xargs dirname | xargs dirname`/lib/python$PYTHON_VERSION/site-packages" "/opt/python3/"

COPY --from=torch-tensorrt-builder /workspace/torch_tensorrt/src/py/dist/ .
# COPY --from=torch-tensorrt-builder /workspace/torch_tensorrt/src/py/dist/ .

RUN cp /opt/torch_tensorrt/docker/WORKSPACE.docker /opt/torch_tensorrt/WORKSPACE
RUN pip install -r /opt/torch_tensorrt/py/requirements.txt
RUN pip install tensorrt==${TENSORRT_VERSION}.*
RUN pip install *.whl && rm -fr /workspace/torch_tensorrt/py/dist/* *.whl
# RUN cp /opt/torch_tensorrt/docker/WORKSPACE.docker /opt/torch_tensorrt/WORKSPACE
# RUN pip install -r /opt/torch_tensorrt/py/requirements.txt
# RUN pip install tensorrt==${TENSORRT_VERSION}.*
# RUN pip install *.whl && rm -fr /workspace/torch_tensorrt/py/dist/* *.whl

WORKDIR /opt/torch_tensorrt
# WORKDIR /opt/torch_tensorrt

ENV LD_LIBRARY_PATH /opt/python3/site-packages/torch/lib:/opt/python3/site-packages/torch_tensorrt/lib:/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH}
ENV PATH /opt/python3/site-packages/torch_tensorrt/bin:${PATH}
# ENV LD_LIBRARY_PATH /opt/python3/site-packages/torch/lib:/opt/python3/site-packages/torch_tensorrt/lib:/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH}
# ENV PATH /opt/python3/site-packages/torch_tensorrt/bin:${PATH}

CMD /bin/bash
5 changes: 3 additions & 2 deletions docker/dist-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ fi

cd ${TOP_DIR} \
&& mkdir -p dist && cd py \
&& pip install -r requirements.txt \
&& pip install wheel
&& pip install wheel \
&& apt-get clean \
&& pip install -r requirements.txt

# Build Torch-TRT
MAX_JOBS=1 LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 ${BUILD_CMD} $* || exit 1
Expand Down

0 comments on commit 9901466

Please sign in to comment.