Use requirements.txt (#22)

diff --git a/.dockerignore b/.dockerignore
index 2186756..5b4ee24 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -7,3 +7,4 @@
 
 # Allow this file
 !pelicanconf.md
+!requirements.txt
diff --git a/Dockerfile b/Dockerfile
index 02bc1c6..2d54b22 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -67,8 +67,6 @@
 RUN apt install subversion -y
 # we likely do not need the following
 # RUN apt install wget unzip fontconfig -y
-# install the python modules we need
-RUN pip install bs4 requests pyyaml ezt pelican-sitemap BeautifulSoup4
 
 ARG PELICAN_VERSION=4.6.0
 ARG MATPLOTLIB_VERSION=3.4.1
@@ -79,6 +77,9 @@
 WORKDIR /tmp/pelican-asf
 COPY --from=pelican-asf /tmp/pelican-asf .
 
+COPY requirements.txt .
+RUN pip install -r requirements.txt --no-deps
+
 # If the site needs authtokens to build, copy them into the file .authtokens
 # and it will be picked up at build time
 # N.B. make sure the .authtokens file is not committed to the repo!
diff --git a/requirements.txt b/requirements.txt
index f229360..37c8341 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1,11 @@
-requests
+pelican
+#pelican-sitemap
+soupsieve # needed by BeautifulSoup4
+BeautifulSoup4 # needed by several plugins
+ezt # needed by several plugins and buildsite.py
+PyYAML # needed by asfdata.py and buildsite.py
+certifi # needed by requests
+idna # needed by requests
+charset-normalizer # needed by requests
+urllib3 # needed by requests
+requests # needed by kick_build.py and asfdata.py