From ef93fef61c6b58560e3d07ab1485ccff520045d7 Mon Sep 17 00:00:00 2001 From: marangiop Date: Tue, 10 May 2022 17:20:35 +0200 Subject: [PATCH 1/3] add dockerfile --- Dockerfile | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ environment.yml | 16 ++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 Dockerfile create mode 100644 environment.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8bc845a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,51 @@ +FROM mambaorg/micromamba:0.14.0 AS builder + +# Copy yml file for the conda environment +COPY environment.yml /tmp/env.yaml + +RUN apt-get update -qq && \ + micromamba install -y -c conda-forge conda-pack && \ + micromamba env create -f /tmp/env.yaml && \ + conda-pack -p /opt/conda/envs/ptox -o /tmp/env.tar && \ + micromamba remove -p /opt/conda/envs/ptox --all -y && \ + micromamba clean --all --yes + +WORKDIR /ptox +RUN mkdir env && cd env && \ + tar xf /tmp/env.tar && \ + rm /tmp/env.tar && \ + /ptox/env/bin/conda-unpack + +FROM python:3.6-stretch +RUN apt-get update --fix-missing && \ + apt-get install -y \ + libz-dev \ + libbz2-dev \ + liblzma-dev \ + libcurl4-openssl-dev \ + libxml2-dev \ + git \ + wget \ + unzip \ + curl \ + build-essential \ + libpq-dev \ + zlib1g-dev \ + --no-install-recommends && \ + rm -rf /var/lib/apt/lists/* + +COPY --from=builder /ptox /ptox +ENV PATH="/ptox/env/bin:$PATH" +RUN useradd -ms /bin/bash docker +WORKDIR /home/docker +USER docker + +COPY ./ /home/docker/api +COPY .env /home/docker/api/.env + +CMD ["flask", "run"] +#CMD ["uwsgi", "app.ini"] + + + + diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000..ecf0d1c --- /dev/null +++ b/environment.yml @@ -0,0 +1,16 @@ +name: ptox +channels: + - conda-forge +dependencies: + - pip: + - psycopg2~=2.9.3 + - Flask~=2.1.1 + - python-dotenv + - graphene>=3.0 + - sqlparse>=0.3.0 + - Pygments>=2.0.1 + - flask-cors>=3.0.2 + + + + From 5b0a36accee8c9bbbcc6a960a030339bb4f0443f Mon Sep 17 00:00:00 2001 From: marangiop Date: Tue, 10 May 2022 19:16:57 +0200 Subject: [PATCH 2/3] working Dockerfile and environment.yml without bugs --- Dockerfile | 52 +++++++++++++------------------------------------ environment.yml | 17 ++++++++-------- 2 files changed, 23 insertions(+), 46 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8bc845a..fca4e1c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,50 +1,26 @@ -FROM mambaorg/micromamba:0.14.0 AS builder +FROM mambaorg/micromamba:0.14.0 -# Copy yml file for the conda environment -COPY environment.yml /tmp/env.yaml +RUN apt-get update -RUN apt-get update -qq && \ - micromamba install -y -c conda-forge conda-pack && \ - micromamba env create -f /tmp/env.yaml && \ - conda-pack -p /opt/conda/envs/ptox -o /tmp/env.tar && \ - micromamba remove -p /opt/conda/envs/ptox --all -y && \ +COPY environment.yml /tmp/environment.yaml + +RUN micromamba env create -f /tmp/environment.yaml && \ micromamba clean --all --yes -WORKDIR /ptox -RUN mkdir env && cd env && \ - tar xf /tmp/env.tar && \ - rm /tmp/env.tar && \ - /ptox/env/bin/conda-unpack - -FROM python:3.6-stretch -RUN apt-get update --fix-missing && \ - apt-get install -y \ - libz-dev \ - libbz2-dev \ - liblzma-dev \ - libcurl4-openssl-dev \ - libxml2-dev \ - git \ - wget \ - unzip \ - curl \ - build-essential \ - libpq-dev \ - zlib1g-dev \ - --no-install-recommends && \ - rm -rf /var/lib/apt/lists/* - -COPY --from=builder /ptox /ptox -ENV PATH="/ptox/env/bin:$PATH" +COPY ./ /home/docker/api +COPY .env /home/docker/api/.env + RUN useradd -ms /bin/bash docker WORKDIR /home/docker USER docker -COPY ./ /home/docker/api -COPY .env /home/docker/api/.env +ENV PATH="/opt/conda/envs/ptox/bin:$PATH" + +#CMD ["bash"] + +RUN /bin/bash -c "micromamba activate ptox" -CMD ["flask", "run"] -#CMD ["uwsgi", "app.ini"] +CMD [ "flask", "run" ] diff --git a/environment.yml b/environment.yml index ecf0d1c..ab7061b 100644 --- a/environment.yml +++ b/environment.yml @@ -2,14 +2,15 @@ name: ptox channels: - conda-forge dependencies: - - pip: - - psycopg2~=2.9.3 - - Flask~=2.1.1 - - python-dotenv - - graphene>=3.0 - - sqlparse>=0.3.0 - - Pygments>=2.0.1 - - flask-cors>=3.0.2 + - python=3.8.1 + - psycopg2~=2.9.3 + - Flask~=2.1.1 + - python-dotenv + - graphene>=3.0 + - sqlparse>=0.3.0 + - Pygments>=2.0.1 + - flask-cors>=3.0.2 + From e748f77cea26e7ee09ce554a2d3eb531182b7332 Mon Sep 17 00:00:00 2001 From: marangiop Date: Wed, 11 May 2022 23:19:05 +0200 Subject: [PATCH 3/3] adding uwsgi - TODO figure out connection to DB host from within container --- Dockerfile | 5 +++-- app.ini | 25 +++++++++++++++++++++++++ environment.yml | 1 + start.sh | 6 ++++++ wsgi.py | 4 ++++ 5 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 app.ini create mode 100755 start.sh create mode 100644 wsgi.py diff --git a/Dockerfile b/Dockerfile index fca4e1c..603032d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,8 +20,9 @@ ENV PATH="/opt/conda/envs/ptox/bin:$PATH" RUN /bin/bash -c "micromamba activate ptox" -CMD [ "flask", "run" ] - +WORKDIR "/home/docker/api" +#CMD [ "flask", "run" ] +CMD ["uwsgi", "app.ini"] diff --git a/app.ini b/app.ini new file mode 100644 index 0000000..8a1b227 --- /dev/null +++ b/app.ini @@ -0,0 +1,25 @@ +[uwsgi] +# the module itself, by referring to the wsgi.py file minus the extension, and the callable within the file, app: +module = wsgi:app + +# Enable hot reload! +py-autoreload = 1 + +# Nginx to handle actual client connections, which will then pass requests to uWSGI. +socket = /tmp/mysite.sock +# socket = :80 + + +master = false +processes = 1 +cheaper = 0 +lazy-apps = true +threads = 2 + +# giving the Nginx group ownership of the uWSGI process later on, +# so we need to make sure the group owner of the socket can read information from it and write to it. +chmod-socket = 660 + +# clean up the socket when the process stops by adding the vacuum option: +vacuum = true +die-on-term = true \ No newline at end of file diff --git a/environment.yml b/environment.yml index ab7061b..3b3b450 100644 --- a/environment.yml +++ b/environment.yml @@ -10,6 +10,7 @@ dependencies: - sqlparse>=0.3.0 - Pygments>=2.0.1 - flask-cors>=3.0.2 + - uwsgi==2.0.20 diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..6d6a09c --- /dev/null +++ b/start.sh @@ -0,0 +1,6 @@ +#!/bin/bash +app="docker.test" +docker build -t ${app} . +docker run -d -p 56733:5000 \ + --name=${app} \ + -v $PWD:/app ${app} \ No newline at end of file diff --git a/wsgi.py b/wsgi.py new file mode 100644 index 0000000..11e7de6 --- /dev/null +++ b/wsgi.py @@ -0,0 +1,4 @@ +from app import app + +if __name__ == "__main__": + app.run() \ No newline at end of file