1- FROM ubuntu:24.04
1+ # VERSION: 2025.08.29
2+
3+ FROM ubuntu:24.04 AS builder
24
35ARG MINIFORGE_VERSION=24.1.2-0
6+ ARG QIIME2RELEASE=2023.5
47
58ENV CONDA_DIR=/opt/conda
69ENV PATH=${CONDA_DIR}/bin:${PATH}
@@ -29,10 +32,19 @@ RUN conda install tornado
2932COPY trigger.py /trigger.py
3033
3134# Download qiime2 yaml (make sure to use a qiime2 version that is able to visualize qiime artifacts of the correct version)
32- RUN wget --quiet https://data.qiime2.org/distro/core/qiime2-2023.5-py38-linux-conda.yml
35+ RUN wget --quiet https://data.qiime2.org/distro/core/qiime2-${QIIME2RELEASE}-py38-linux-conda.yml
36+
37+ RUN sed -n '/channels/,/dependencies/p' qiime2-${QIIME2RELEASE}-py38-linux-conda.yml > tinyq2.yml && \
38+ echo " - q2-metadata=${QIIME2RELEASE}" >> tinyq2.yml && \
39+ echo " - q2-mystery-stew=${QIIME2RELEASE}" >> tinyq2.yml && \
40+ echo " - q2-types=${QIIME2RELEASE}" >> tinyq2.yml && \
41+ echo " - q2cli=${QIIME2RELEASE}" >> tinyq2.yml && \
42+ echo " - q2templates=${QIIME2RELEASE}" >> tinyq2.yml && \
43+ echo " - typeguard=2.13.3" >> tinyq2.yml && \
44+ echo " - qiime2" >> tinyq2.yml
3345
3446# Create conda env
35- RUN conda env create --name qtp-visualization -y --file qiime2-2023.5-py38-linux-conda .yml
47+ RUN conda config --set channel_priority strict && conda env create --name qtp-visualization -y --file tinyq2 .yml
3648# Make RUN commands use the new environment:
3749# append --format docker to the build command, see https://github.com/containers/podman/issues/8477
3850SHELL ["conda" , "run" , "-p" , "/opt/conda/envs/qtp-visualization" , "/bin/bash" , "-c" ]
@@ -41,34 +53,67 @@ ENV LC_ALL=C.UTF-8
4153ENV LANG=C.UTF-8
4254
4355RUN pip install -U pip
44- RUN pip install https://github.com/qiita-spots/qiita_client/archive/master.zip
45- RUN pip install https://github.com/qiita-spots/qiita-files/archive/master.zip
56+ # RUN pip install https://github.com/qiita-spots/qiita_client/archive/master.zip
57+ RUN git clone -b uncouplePlugins https://github.com/jlab/qiita_client.git
58+ RUN sed -i "s/f'Entered BaseQiitaPlugin._register_command({command.name})'/'Entered BaseQiitaPlugin._register_command(%s)' % command.name/" qiita_client/qiita_client/plugin.py
59+ RUN cd qiita_client && pip install --no-cache-dir .
60+
61+ # RUN pip install https://github.com/qiita-spots/qiita-files/archive/master.zip
62+ RUN git clone -b master https://github.com/jlab/qiita-files.git
63+ RUN cd /qiita-files && pip install -e . -v
64+
4665RUN git clone https://github.com/qiita-spots/qtp-visualization.git
47- WORKDIR qtp-visualization
66+ WORKDIR /qtp-visualization
67+ RUN sed -i "s|'qiita_client', 'click >= 3.3', 'qiime2'|'click >= 3.3'|" setup.py
4868RUN pip install -e .
4969RUN pip install --upgrade certifi
5070RUN pip install pip-system-certs
5171
52- # TODO: should the plugin get the server configuration?!
53- RUN export QIITA_CONFIG_FP=/qiita/config_qiita_oidc.cfg
54-
5572WORKDIR /
5673
74+ RUN repo=q2-metadata; mkdir -p /$repo && wget -O- https://github.com/qiime2/$repo/archive/refs/tags/${QIIME2RELEASE}.0.tar.gz | tar -xz --strip-components=1 -C /$repo
75+ RUN repo=q2-mystery-stew; mkdir -p /$repo && wget -O- https://github.com/qiime2/$repo/archive/refs/tags/${QIIME2RELEASE}.0.tar.gz | tar -xz --strip-components=1 -C /$repo
76+ RUN repo=q2-types; mkdir -p /$repo && wget -O- https://github.com/qiime2/$repo/archive/refs/tags/${QIIME2RELEASE}.0.tar.gz | tar -xz --strip-components=1 -C /$repo
77+ RUN repo=q2cli; mkdir -p /$repo && wget -O- https://github.com/qiime2/$repo/archive/refs/tags/${QIIME2RELEASE}.1.tar.gz | tar -xz --strip-components=1 -C /$repo
78+ RUN repo=q2templates; mkdir -p /$repo && wget -O- https://github.com/qiime2/$repo/archive/refs/tags/${QIIME2RELEASE}.0.tar.gz | tar -xz --strip-components=1 -C /$repo
79+ RUN repo=qiime2; mkdir -p /$repo && wget -O- https://github.com/qiime2/$repo/archive/refs/tags/${QIIME2RELEASE}.1.tar.gz | tar -xz --strip-components=1 -C /$repo
80+
81+ COPY requirements.txt ./requirements.txt
82+ RUN conda install cython
83+ RUN pip wheel --no-cache-dir --wheel-dir /wheels -r requirements.txt
84+ RUN pip install iow
85+
86+
87+
88+ # ==========================
89+ # Stage 2: Runtime
90+ # ==========================
91+ FROM python:3.8-slim
92+
93+ # python package compile in build stage
94+ COPY --from=builder /wheels /wheels
95+
96+ RUN pip install --no-cache-dir /wheels/* \
97+ && rm -rf rm -rf `find /usr/local/lib/python3.8/site-packages -type d -name "tests" | grep -v numpy`
98+
5799COPY start_qtp-visualization.sh .
58100RUN chmod 755 start_qtp-visualization.sh
59101
60102RUN mkdir -p /unshared_plugins
61103ENV QIITA_PLUGINS_DIR=/unshared_plugins/
62104
105+ COPY trigger_noconda.py /trigger.py
106+
63107# # Export cert and config filepaths
64108COPY qiita_server_certificates/qiita_server_certificates.pem /qiita_server_certificates/qiita_server_certificates.pem
65109ENV REQUESTS_CA_BUNDLE=/qiita_server_certificates/qiita_server_certificates.pem
66110ENV SSL_CERT_FILE=/qiita_server_certificates/qiita_server_certificates.pem
67111
68- # RUN export QIITA_ROOTCA_CERT=/unshared_certificates/ci_rootca.crt
69- RUN chmod u+x /qtp-visualization/scripts/configure_visualization_types /qtp-visualization/scripts/start_visualization_types
112+ RUN chmod u+x /usr/local/bin/configure_visualization_types /usr/local/bin/start_visualization_types
70113COPY qiita_server_certificates/*_server.* /qiita_server_certificates/
71- RUN /qtp-visualization/scripts/configure_visualization_types --env-script "true" --server-cert `find /qiita_server_certificates/ -name "*_server.crt" -type f`
114+ # qiime2 expects to have a CONDA_PREFIX set, see https://github.com/qiime2/qiime2/blob/812fd09cf80b4ed76c1f39827ae2dba729448436/qiime2/sdk/parallel_config.py#L30
115+ ENV CONDA_PREFIX=/usr/local
116+ RUN configure_visualization_types --env-script "true" --server-cert `find /qiita_server_certificates/ -name "*_server.crt" -type f`
72117RUN sed -i -E "s/^START_SCRIPT = .+/START_SCRIPT = python \/ start_plugin.py qtp-visualization/" /unshared_plugins/*.conf
73118
74- CMD ["./start_qtp-visualization.sh" ]
119+ CMD ["./start_qtp-visualization.sh" ]
0 commit comments