File: gromacs.dockerfile

package info (click to toggle)
gromacs 2026~rc-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 274,216 kB
  • sloc: xml: 3,831,143; cpp: 686,111; ansic: 75,300; python: 21,171; sh: 3,553; perl: 2,246; yacc: 644; fortran: 397; lisp: 265; makefile: 174; lex: 125; awk: 68; csh: 39
file content (46 lines) | stat: -rw-r--r-- 1,778 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Provide an easy-to-reproduce environment in which to test full Python functionality.
# Produce an image with GROMACS installed. Use the root of the repository as the build context

# Optionally, set `--build-arg DOCKER_CORES=N` for a Docker engine running with access to more than 1 CPU.
#    REF=`git show -s --pretty=format:"%h"`
#    docker build -t gmxapi/gromacs-${MPIFLAVOR}:${REF} \
#               --build-arg DOCKER_CORES=4 \
#               --build-arg MPIFLAVOR=${MPIFLAVOR} \
#               -f gromacs.dockerfile ../..

# This image serves as a base for integration with the gmxapi Python tools and sample code.

ARG MPIFLAVOR=mpich
ARG REF=latest
FROM gmxapi/gromacs-dependencies-$MPIFLAVOR:$REF as build

# We let the sources stay in the intermediate `build` stage, since a little bloat here shouldn't
#impact the size of the final containers unless we copy explicitly (see below)
ENV SRC_DIR /gromacs-source
COPY . $SRC_DIR

ENV BUILD_DIR /tmp/gromacs-build
RUN mkdir -p $BUILD_DIR
WORKDIR $BUILD_DIR

ARG DOCKER_CORES=1
# Allow the build type to be specified with `docker build --build-arg TYPE=something`
ARG TYPE=Release
RUN cmake $SRC_DIR \
        -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs \
        -DGMXAPI=ON \
        -DGMX_THREAD_MPI=ON \
        -DGMX_BUILD_HELP=OFF \
        -DGMX_USE_RDTSCP=OFF \
        -DGMX_INSTALL_LEGACY_API=ON \
        -DCMAKE_BUILD_TYPE=$TYPE
RUN make -j$DOCKER_CORES
RUN make -j$DOCKER_CORES tests
RUN make -j$DOCKER_CORES install

FROM gmxapi/gromacs-dependencies-$MPIFLAVOR:$REF

COPY --from=build /usr/local/gromacs /usr/local/gromacs
# The following can be essential for troubleshooting, but we should suppress it for containers
# that will be uploaded and shared.
#COPY --from=build /gromacs-source /gromacs-source