Using python venv in docker | Will Schenk

Ask questions Research chat →

https://willschenk.com/labnotes/2024/using_python_venv_in_docker/ · scraped

deploy

Attachments

Scraped Content

— 149 words · 2026-05-19 12:31:35 UTC ·

Excerpt

![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/e605ec9a-a525-4a6a-8364-a360c1e99931/cover.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VGTIRRDT%2F20260519%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260519T193134Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEBMaCXVzLXdlc3QtMiJHMEUCIHIBxFxmwjq3ZLbNnLhvCTMbtKTSfwvKbNOhi6F5id8iAiEA%2BJwWYHxVxshMzceB7zzITeRcGx3T7J2cEYLqHrjIb44qiAQI3P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDPqtkB63DC35YXg9fSrcAynCMpb7X9FtO8skRFLftfrap4FMx48XEqyu5lArfxdjTxrmKh4YcU2pfn%2FsYcNDbA9AnsFiFspcgIVZmwCo4DduWu9C1bUCUpIAszhNQ%2Fq%2FG0TeisxbCGM4%2FKOBBppejrYaNjFNNCPkLNLAxadFIWYF988wBwdJ58M%2Fe%2FiqAMOG5SsKP4b2pDNWdgn2lOCiQ7kzCMLpkCHILDpVsF2L3iC%2Fr3ovLRXUQ%2B36vNwY1pedWyYHg5R678TDKHzB7IbzPVEbW0U6hy1ZifPrGWpK%2FdOqAQQ45jBIrSnts8fg07lNzsnreOv%2BZr8h8pDxutSpDgbCfiCcyv%2F4EjW0WGWQ7s6HV6TC9zWAZtf4xbDF2rq%2BJeyQ0hUot%2BU8gURFOe8TQ8vCOlLnBusniiD
![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/e605ec9a-a525-4a6a-8364-a360c1e99931/cover.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB466VGTIRRDT%2F20260519%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260519T193134Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEBMaCXVzLXdlc3QtMiJHMEUCIHIBxFxmwjq3ZLbNnLhvCTMbtKTSfwvKbNOhi6F5id8iAiEA%2BJwWYHxVxshMzceB7zzITeRcGx3T7J2cEYLqHrjIb44qiAQI3P%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARAAGgw2Mzc0MjMxODM4MDUiDPqtkB63DC35YXg9fSrcAynCMpb7X9FtO8skRFLftfrap4FMx48XEqyu5lArfxdjTxrmKh4YcU2pfn%2FsYcNDbA9AnsFiFspcgIVZmwCo4DduWu9C1bUCUpIAszhNQ%2Fq%2FG0TeisxbCGM4%2FKOBBppejrYaNjFNNCPkLNLAxadFIWYF988wBwdJ58M%2Fe%2FiqAMOG5SsKP4b2pDNWdgn2lOCiQ7kzCMLpkCHILDpVsF2L3iC%2Fr3ovLRXUQ%2B36vNwY1pedWyYHg5R678TDKHzB7IbzPVEbW0U6hy1ZifPrGWpK%2FdOqAQQ45jBIrSnts8fg07lNzsnreOv%2BZr8h8pDxutSpDgbCfiCcyv%2F4EjW0WGWQ7s6HV6TC9zWAZtf4xbDF2rq%2BJeyQ0hUot%2BU8gURFOe8TQ8vCOlLnBusniiDtOKPjLEVm3vDSGrqq%2BYjAgPhIXtb1lOSdcFf5TZeBubJHpOX8Ty%2B8KbUDsq%2B4kmVVckmEwSGX7IWhizkEz7zLu%2FqfNEd1oQ4kDX4UUnFuJd%2F1m8I356732mImjwmXN%2BkS4Q8jKbtOza7Baz5QY%2BH1%2BMp8uZL%2BrKUR7%2Flx3mm9Gm9YCO7PjHytGNSZCaVnpDCoPAavQOW2S18WCjx3%2FNfGPZHFYpNzZrLuYj8IuiwCsrgoMODbstAGOqUBXce%2FwGiG9LaBgPJY6VQ035Pi4N%2FQ0F6xTvldqJUVxeFY%2BHpr78Q234TC6OOvweK6LON1uO9eLD%2BxgYhXW7Oxk5xZN5Xt%2F0fk0h9mYVqf7SYnhE9%2B9DJiMa3ZD5CuvUAC33Jo7Cn5e68u7zyRuN%2F1TKoAg%2FTibacHU02oet%2B4xJVqQ1hfm%2B%2Bs01l6Xlcfp%2B2X6GEH%2B1NNKLea%2B654upLtQo3R3Ub7&X-Amz-Signature=b7602074d890732b227c6e97757965c88748d00866377582d43411bc2518a37f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) ## ruby and python, sitting in a tree I was building a sinatra app and needed to throw in some python binaries. Here's a Dockerfile that handles both Gemfile and requirements.txt. ```docker ARG RUBY_VERSION=3.3.4 FROM ruby:$RUBY_VERSION-slim as base RUN apt-get update -qq && \ apt-get install --no-install-recommends -y build-essential curl sqlite3 RUN apt-get install -y python3 python3-pip python3.11-venv RUN gem update --system --no-document && \ bundle config set --local without development # Rack app lives here WORKDIR /app ENV VIRTUAL_ENV=/opt/venv RUN python3 -m venv $VIRTUAL_ENV ENV PATH="$VIRTUAL_ENV/bin:$PATH" COPY requirements.txt . RUN /opt/venv/bin/pip install -r requirements.txt # Install application gems COPY Gemfile* . RUN bundle install --without development RUN useradd ruby --home /app --shell /bin/bash RUN chown -R ruby:ruby /app USER ruby:ruby ENV APP_ENV=production ENV PATH="$VIRTUAL_ENV/bin:$PATH" # Copy application code COPY --chown=ruby:ruby . . # Start the server EXPOSE 3000 CMD ["bundle", "exec", "rackup", "--host", "0.0.0.0", "--port", "3000"] ```

Visibility

Visible to everyone

Reading Status

Related Bookmarks

My Note


Saved!

Annotations

Export as Markdown
+ Annotate selection

Add Annotation