diff --git a/Dockerfile b/Dockerfile index e5737ba..b41d862 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,65 +1,57 @@ # NOTE: Use the run-container.sh script to build and launch this container. -# We do a multi-stage build (requires Docker >= 17.05) to install everything, then copy it all -# to the final target image. +FROM centos:8 -FROM centos:8 AS base +# update packages +RUN dnf -y upgrade-minimal -# update packages and install Python and Java -RUN dnf -y upgrade-minimal && \ - dnf install -y python36 && \ - curl -s "https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz" | tar -C /usr/bin/ -xz && \ - dnf clean all +# install Python +RUN dnf install -y python36 -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FROM base AS build - -# set up a virtualenv -RUN python3.6 -m venv /opt/venv -ENV PATH="/opt/venv/bin:$PATH" -RUN pip install --upgrade pip - -# install the application requirements -COPY requirements.txt requirements-dev.txt ./ -RUN pip install -r requirements.txt -ARG ENABLE_TESTS -RUN if [ "$ENABLE_TESTS" ]; then pip install -r requirements-dev.txt ; fi - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FROM base - -# copy the virtualenv from the build image -COPY --from=build /opt/venv /opt/venv -ENV PATH="/opt/venv/bin:$PATH" +# install Java +RUN curl -s "https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz" \ + | tar -C /usr/bin/ -xz # install Firefox -RUN dnf install -y wget bzip2 xorg-x11-server-Xvfb gtk3 dbus-glib -RUN wget -qO- "https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=en-US" | tar -C /usr/local/ -jx && \ +RUN dnf install -y wget bzip2 xorg-x11-server-Xvfb gtk3 dbus-glib && \ + wget -qO- "https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=en-US" \ + | tar -C /usr/local/ -jx && \ ln -s /usr/local/firefox/firefox /usr/bin/firefox && \ - echo "exclude=firefox" >> /etc/dnf/dnf.conf + echo "exclude=firefox" >>/etc/dnf/dnf.conf # install geckodriver RUN url=$( curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | grep -Poh 'https.*linux64\.tar\.gz(?!\.)' ) && \ - curl -sL "$url" | tar -C /usr/bin/ -xz + curl -sL "$url" \ + | tar -C /usr/bin/ -xz -# install the application -WORKDIR /app -COPY vasl_templates vasl_templates -COPY vassal-shim/release/vassal-shim.jar vassal-shim/release/ -COPY setup.py requirements.txt requirements-dev.txt LICENSE.txt ./ -RUN pip install -e . +# clean up +RUN dnf clean all -# copy the config files -COPY docker/config/* vasl_templates/webapp/config/ +# install the application requirements +WORKDIR /app +COPY requirements.txt requirements-dev.txt ./ +RUN pip3 install -r requirements.txt ARG ENABLE_TESTS -RUN if [ "$ENABLE_TESTS" ]; then echo "ENABLE_REMOTE_TEST_CONTROL = 1" >>vasl_templates/webapp/config/debug.cfg ; fi +RUN if [ "$ENABLE_TESTS" ]; then \ + pip3 install -r requirements-dev.txt \ +; fi + +# install the application +COPY vasl_templates/webapp/ ./vasl_templates/webapp/ +COPY vassal-shim/release/vassal-shim.jar ./vassal-shim/release/ +COPY setup.py LICENSE.txt ./ +RUN pip3 install --editable . + +# install the config files +COPY docker/config/ ./vasl_templates/webapp/config/ +RUN if [ "$ENABLE_TESTS" ]; then \ + echo "ENABLE_REMOTE_TEST_CONTROL = 1" >>vasl_templates/webapp/config/debug.cfg \ +; fi # create a new user RUN useradd --create-home app USER app EXPOSE 5010 -COPY docker/run.sh . +COPY docker/run.sh ./ CMD ./run.sh diff --git a/docker/run.sh b/docker/run.sh index 8632ea7..090418e 100755 --- a/docker/run.sh +++ b/docker/run.sh @@ -6,4 +6,4 @@ export DISPLAY=:10.0 Xvfb :10 -ac 1>/tmp/xvfb.log 2>/tmp/xvfb.err & # run the webapp server -python /app/vasl_templates/webapp/run_server.py +python3 /app/vasl_templates/webapp/run_server.py