-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
123 lines (109 loc) · 4.84 KB
/
Dockerfile
File metadata and controls
123 lines (109 loc) · 4.84 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# docker build -t alpine-ecflow .
# FROM alpine:edge
FROM alpine:3.19.3
RUN apk update \
&& apk add --no-cache build-base cmake g++ linux-headers openssl python3-dev ca-certificates wget vim git perl \
&& update-ca-certificates
RUN apk add --no-cache openssl-dev
RUN apk add --no-cache cmake
RUN apk add python3-dev
RUN apk add qt5-qtnetworkauth qt5-qtnetworkauth-dev qt5-qtsvg-dev qt5-qtcharts-dev
# OPER
# ENV CM=https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2.tar.gz
# ENV CM=https://github.com/Kitware/CMake/releases/download/v3.21.2/cmake-3.21.2.tar.gz
# ENV CM=https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4.tar.gz
ENV DBUILD=/tmp/ecflow_build
RUN mkdir ${DBUILD}
RUN mkdir -p /tmp/build
# RUN cd ${DBUILD} && wget -O cmake-3.tgz ${CM}
# DEV
# COPY cmake-3.13.2.tar.gz /tmp/ecflow_build/cmake-3.tgz
#RUN cd ${DBUILD} \
# && tar -xzf cmake-3.tgz \
# && cd cmake-3.* \
# && ./configure \
# && make -j$(grep processor /proc/cpuinfo | wc -l) && make install
ENV BOOST_VERSION=1.71.0
ENV WK=/tmp/ecflow_build/ecFlow-Source \
BOOST_ROOT=/tmp/ecflow_build/boost_1_71_0 \
TB=boost_1_71_0.tar.gz \
COMPILE=1 \
HTTPB=https://archives.boost.io/release/1.71.0/source/${TB}
# TE=ecFlow-5.16.0-Source.tar.gz
# HTTP=https://github.com/ecmwf/ecflow/archive/refs/heads/develop.zip
# HTTP=https://confluence.ecmwf.int/download/attachments/8650755
RUN export BOOST_TGZ=boost_$(echo ${BOOST_VERSION} | tr '.' '_').tar.gz \
HTTPB=https://archives.boost.io/release/1.71.0/source/boost_1_71_0.tar.gz \
&& cd ${DBUILD} \
&& wget -O ${BOOST_TGZ} ${HTTPB} \
&& tar -xzf ${BOOST_TGZ}
RUN export ETGZ=ecFlow.zip HTTPE=https://confluence.ecmwf.int/download/attachments/8650755/ecFlow-5.16.0-Source.tar.gz?api=v2 \
&& cd ${DBUILD} \
&& wget -O ${ETGZ} https://github.com/ecmwf/ecflow/archive/refs/heads/develop.zip && unzip ${ETGZ}
# RUN export ETGZ=ecFlow.tgz HTTPE=https://confluence.ecmwf.int/download/attachments/8650755 \
# && cd ${DBUILD}
# && wget -O ${ETGZ} ${HTTPE}/ecFlow-${ECFLOW_VERSION}-Source.tar.gz?api=v2 && tar -xzf ${ETGZ}
# RUN apk add python2-dev
RUN cd ${DBUILD} && wget -O ecbuild.zip \
https://github.com/ecmwf/ecbuild/archive/refs/heads/develop.zip && \
unzip ecbuild.zip && \
cd ecbuild-* && mkdir build && cd build && cmake ../ && make && make install
ENV ECFLOW_VERSION=5.16.0
RUN ln -sf ${DBUILD}/ecflow-develop ${DBUILD}/ecFlow-${ECFLOW_VERSION}-Source
RUN export WK=${DBUILD}/ecFlow-${ECFLOW_VERSION}-Source \
BOOST_ROOT=${DBUILD}/boost_$(echo ${BOOST_VERSION} | tr '.' '_') \
&& cd ${BOOST_ROOT} \
&& python_root=$(python3 -c "import sys; print(sys.prefix)") \
&& ./bootstrap.sh --with-python-root=$python_root \
--with-python=/usr/bin/python3 \
&& sed -i "s|using python : 3.10 : ;|using python : 3 : python3 : /usr/include/python ;|g" project-config.jam \
&& ln -sf /usr/include/python3.10 /usr/include/python \
&& ln -sf /usr/include/python3.10 /usr/include/python3.9
# && ash $WK/build_scripts/boost_build.sh
RUN apk add boost boost-dev
ENV BOOST_ROOT=/usr
ENV WK=${DBUILD}
RUN apk add git
RUN mkdir -p ${WK} && cd ${WK} && git clone https://github.com/ecmwf/ecflow.git
RUN mkdir -p ${WK}/ecflow-develop/build
ENV WK=${DBUILD}/ecflow-develop
RUN sed -i "s| Boost ${ECFLOW_BOOST_VERSION} REQUIRED| Boost REQUIRED |g" ${WK}/CMakeLists.txt
RUN sed -i "70i set ( ENABLE_STATIC_BOOST_LIBS OFF) " ${WK}/CMakeLists.txt
RUN sed -i "14i find_package( Boost ) " ${WK}/CMakeLists.txt
RUN sed -i '/^[^#]/ s/\(^.*set(ECFLOW_BOOST_VERSION.*$\)/#\ \1/' ${WK}/CMakeLists.txt
RUN sed -i "70i set ( HAVE_TESTS OFF) " ${WK}/CMakeLists.txt
RUN cd ${WK}/build && BOOST_ROOT=/usr cmake -B . -S ..
RUN cd ${WK}/build && make -j$(grep processor /proc/cpuinfo | wc -l) && make install
# && cmake -DCMAKE_CXX_FLAGS=-w -DENABLE_UI=OFF -DENABLE_PYTHON=OFF .. \
# && make -j$(grep processor /proc/cpuinfo | wc -l) && make install
# RUN apk del cmake g++ linux-headers build-base && rm -rf ${DBUILD}
ENV ECFLOW_USER=ecflow \
ECF_PORT=3141 \
ECF_HOME=/home/ecflow/ecflow_server \
HOME=/home/ecflow \
HOST=ecflow \
LANG=C LC=C ECF_LISTS=$ECF_HOME/ecf.lists \
PYTHONPATH=/usr/local/lib/python3/site-packages
ENV ECF_LISTS=$ECF_HOME/ecf.lists
EXPOSE ${ECF_PORT}
ENV USER=ecflow
ENV GROUPNAME=$USER
ENV UID=1001
ENV GID=1221
RUN addgroup \
--gid "$GID" \
"$GROUPNAME" \
&& adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--ingroup "$GROUPNAME" \
--no-create-home \
--uid "$UID" \
$USER
COPY ./ecflow_start_nohup.sh /usr/local/bin/ecflow_start_nohup.sh
WORKDIR /home/ecflow
ENV DISPLAY=:0
RUN mkdir -p $ECF_HOME && echo "5.16.0 # version" > $ECF_HOME/ecf.lists && echo "$ECFLOW_USER" >> $ECF_HOME/ecf.lists
RUN chown ecflow /home/ecflow $ECF_HOME && chgrp ecflow /home/ecflow $ECF_HOME
USER ecflow