Build a Dockerfile
Not the same as a
docker-compose.yml
FROM
the base image for the containerRUN
run any command as though it’s using the terminal- If using something fancy, you may need to install it first
COPY
copy a file from host to containerCMD
run a command at runtime
- Containers will rebuild from the top-most command that was changed
# syntax=docker/dockerfile:1
FROM ubuntu:20.04
# Copy external files
RUN mkdir -p /project/out/
COPY ./requirements.txt /project/
COPY ./hello.ipynb /project/
# Install system packages
RUN apt-get update && apt-get install -y \
wget python3 python3-pip
# Install quarto CLI + clean up
RUN wget https://github.com/quarto-dev/quarto-cli/releases/download/v0.9.83/quarto-0.9.83-linux-amd64.deb
RUN dpkg -i ./quarto-0.9.83-linux-amd64.deb
RUN rm -f ./quarto-0.9.83-linux-amd64.deb
# Install Python requirements
RUN pip3 install -r /project/requirements.txt
# Render notebook
CMD cd /project && \
quarto render ./hello.ipynb && \
# Move output to correct directory
# Needed because quarto requires relative paths in --output-dir:
# https://github.com/quarto-dev/quarto-cli/issues/362
rm -rf /project-out/hello_files/ && \
mkdir -p /project-out/hello_files && \
mv ./hello_files/* /project-out/hello_files/ && \
mv ./hello.html /project-out/