mirror of
https://github.com/mveril/qp-demo
synced 2024-11-03 20:54:01 +01:00
Implement multi-stage-build
This commit is contained in:
parent
228c5aff3b
commit
240b42f113
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
quantum_package_static.tar.gz
|
|
47
Dockerfile
47
Dockerfile
@ -1,8 +1,39 @@
|
|||||||
# For help about how Dockerfiles work, see https://docs.docker.com/engine/reference/builder
|
# For help about how Dockerfiles work, see https://docs.docker.com/engine/reference/builder
|
||||||
|
|
||||||
|
FROM ubuntu:20.04 AS builder
|
||||||
|
# Build argument (can be changed at build time
|
||||||
|
# This argument define timezone for tzdata requierd by qp_run
|
||||||
|
ARG tz=Etc/UTC
|
||||||
|
# enable manpages installation
|
||||||
|
RUN sed -i 's,^path-exclude=/usr/share/man/,#path-exclude=/usr/share/man/,' /etc/dpkg/dpkg.cfg.d/excludes
|
||||||
|
# Install all requierd packages
|
||||||
|
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install apt-utils -y \
|
||||||
|
# Git for download quantum package
|
||||||
|
git \
|
||||||
|
# All necessary packages to compile and run quantum package
|
||||||
|
curl wget python gfortran gcc g++ build-essential unzip liblapack-dev pkg-config autoconf zlib1g zlib1g-dev libgmp-dev \
|
||||||
|
-y
|
||||||
|
# Add user and switch to this user
|
||||||
|
RUN adduser --disabled-password --gecos '' builder
|
||||||
|
USER builder
|
||||||
|
# I don't know why but the USER environment variable is not set so I set it because it's requested for ninja
|
||||||
|
ENV USER=builder
|
||||||
|
# Go to home
|
||||||
|
WORKDIR /home/builder
|
||||||
|
# Download quantum package
|
||||||
|
RUN git clone --depth 1 --branch 2.1.2 https://github.com/QuantumPackage/qp2
|
||||||
|
# Go to quantum package
|
||||||
|
WORKDIR /home/builder/qp2
|
||||||
|
# Configure
|
||||||
|
RUN ./configure -i all -c config/gfortran_avx.cfg
|
||||||
|
# source don't work with /bin/sh (used by the run command so I use bash)
|
||||||
|
# Compile the code to a static build
|
||||||
|
RUN /bin/bash -c "source quantum_package.rc ; qp export_as_tgz"
|
||||||
|
|
||||||
|
|
||||||
# This image is based from Ubuntu LTS
|
# This image is based from Ubuntu LTS
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
LABEL version="1.0" \
|
LABEL version="1.1" \
|
||||||
maintainer.name="Mickaël Véril" \
|
maintainer.name="Mickaël Véril" \
|
||||||
quantum_package.author.name="Anthony Scemama" \
|
quantum_package.author.name="Anthony Scemama" \
|
||||||
quantum_package.url="https://quantumpackage.github.io/qp2" \
|
quantum_package.url="https://quantumpackage.github.io/qp2" \
|
||||||
@ -26,19 +57,19 @@ apt-get autoremove && apt-get clean
|
|||||||
# Reconfigure tzdata with the good timezone
|
# Reconfigure tzdata with the good timezone
|
||||||
RUN echo $tz > /etc/timezone && rm -rf /etc/localtime && echo "set mouse=" > ~/.vimrc
|
RUN echo $tz > /etc/timezone && rm -rf /etc/localtime && echo "set mouse=" > ~/.vimrc
|
||||||
RUN dpkg-reconfigure -f noninteractive tzdata
|
RUN dpkg-reconfigure -f noninteractive tzdata
|
||||||
# ADD user and switch to this user
|
# Add user and switch to this user
|
||||||
RUN adduser --disabled-password --gecos '' $user
|
RUN adduser --disabled-password --gecos '' $user
|
||||||
USER $user
|
USER $user
|
||||||
# I don't know why but the USER environment variable is not set so I set it because it's requested for ninja
|
# I don't know why but the USER environment variable is not set so I set it because it's requested for ninja
|
||||||
ENV USER=$user
|
ENV USER=$user
|
||||||
# Go to home
|
# Go to home
|
||||||
WORKDIR /home/$user
|
WORKDIR /home/$user
|
||||||
# untar directly static quantum package
|
# Copy examples
|
||||||
ADD quantum_package_static.tar.gz .
|
COPY --chown=$user:$user examples examples
|
||||||
# move quantum package
|
# Copy QP2 static from build
|
||||||
RUN mv quantum_package_static qp2
|
COPY --from=builder --chown=$user:$user /home/builder/qp2/quantum_package_static.tar.gz .
|
||||||
# add examples
|
# Extract static build
|
||||||
COPY --chown=$user examples examples
|
RUN tar -xf quantum_package_static.tar.gz && mv quantum_package_static qp2 && rm quantum_package_static.tar.gz
|
||||||
RUN echo "set -g default-command /home/$user/qp2/bin/qpsh" >> .tmux.conf
|
RUN echo "set -g default-command /home/$user/qp2/bin/qpsh" >> .tmux.conf
|
||||||
RUN echo "shell \"/home/$user/qp2/bin/qpsh\"" >> .screenrc
|
RUN echo "shell \"/home/$user/qp2/bin/qpsh\"" >> .screenrc
|
||||||
# start a qp shell when run
|
# start a qp shell when run
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
# For help about how Dockerfiles work, see https://docs.docker.com/engine/reference/builder
|
|
||||||
|
|
||||||
# This image is based from Ubuntu LTS
|
|
||||||
FROM ubuntu:20.04
|
|
||||||
LABEL version="1.0" \
|
|
||||||
maintainer.name="Mickaël Véril" \
|
|
||||||
quantum_package.author.name="Anthony Scemama" \
|
|
||||||
quantum_package.url="https://quantumpackage.github.io/qp2" \
|
|
||||||
quantum_package.repo="https://github.com/QuantumPackage/qp2" \
|
|
||||||
laboratory.name="Laboratoire de Chimie et Physique Quantique (LCPQ)" \
|
|
||||||
laboratory.url="http://www.lcpq.ups-tlse.fr/"
|
|
||||||
# Build argument (can be changed at build time
|
|
||||||
# This argument define the user name
|
|
||||||
ARG user=user
|
|
||||||
# This argument define timezone for tzdata requierd by qp_run
|
|
||||||
ARG tz=Etc/UTC
|
|
||||||
# enable manpages installation
|
|
||||||
RUN sed -i 's,^path-exclude=/usr/share/man/,#path-exclude=/usr/share/man/,' /etc/dpkg/dpkg.cfg.d/excludes
|
|
||||||
# Install all requierd packages
|
|
||||||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install apt-utils -y \
|
|
||||||
# Git for download quantum package
|
|
||||||
git \
|
|
||||||
# All necessary packages to compile and run quantum package
|
|
||||||
curl wget python gfortran gcc g++ build-essential unzip liblapack-dev pkg-config autoconf zlib1g zlib1g-dev tzdata libgmp-dev \
|
|
||||||
# Other packages for user usage
|
|
||||||
htop vim emacs screen tmux less man manpages-posix lsb-release -y
|
|
||||||
# Reconfigure tzdata with the good timezone
|
|
||||||
RUN echo $tz > /etc/timezone
|
|
||||||
RUN rm -rf /etc/localtime
|
|
||||||
RUN dpkg-reconfigure -f noninteractive tzdata
|
|
||||||
# ADD user and switch to this user
|
|
||||||
RUN adduser --disabled-password --gecos '' $user
|
|
||||||
USER $user
|
|
||||||
# I don't know why but the USER environment variable is not set so I set it because it's requested for ninja
|
|
||||||
ENV USER=$user
|
|
||||||
# Go to home
|
|
||||||
WORKDIR /home/$user
|
|
||||||
# Download quantum package
|
|
||||||
RUN git clone https://github.com/QuantumPackage/qp2
|
|
||||||
# Go to quantum package
|
|
||||||
WORKDIR /home/$user/qp2
|
|
||||||
# Configure
|
|
||||||
RUN TRAVIS=1 ./configure -i all -c config/gfortran.cfg
|
|
||||||
# source don't work with /bin/sh (used by the run command so I use bash)
|
|
||||||
# Compile the code
|
|
||||||
RUN /bin/bash -c "source quantum_package.rc ; ninja"
|
|
||||||
# Run tests
|
|
||||||
RUN /bin/bash -c "source quantum_package.rc ; qp_test -a"
|
|
||||||
# Return to the user directory
|
|
||||||
WORKDIR /home/$user/
|
|
||||||
# add examples
|
|
||||||
COPY --chown=$user examples examples
|
|
||||||
RUN echo "set -g default-command /home/$user/qp2/bin/qpsh" >> .tmux.conf
|
|
||||||
RUN echo "shell \"/home/$user/qp2/bin/qpsh\"" >> .screenrc
|
|
||||||
# start a qp shell when run
|
|
||||||
CMD ["./qp2/bin/qpsh"]
|
|
||||||
|
|
||||||
|
|
3
Makefile
3
Makefile
@ -7,9 +7,6 @@ default:
|
|||||||
no-cache:
|
no-cache:
|
||||||
docker build -t $(IMAGE) --no-cache .
|
docker build -t $(IMAGE) --no-cache .
|
||||||
|
|
||||||
compile:
|
|
||||||
docker build -t $(IMAGE) -f Dockerfile.compile .
|
|
||||||
|
|
||||||
compile-no-cache:
|
compile-no-cache:
|
||||||
docker build -t $(IMAGE) -f Dockerfile.compile --no-cache . .
|
docker build -t $(IMAGE) -f Dockerfile.compile --no-cache . .
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user