1
1
FROM centos:7.3.1611
2
2
3
- LABEL maintainer="USGS EROS LCMAP http://eros.usgs.gov http://github.com/usgs-eros/lcmap-firebird"
4
- LABEL description="CentOS based Spark-Mesos image for LCMAP"
5
- LABEL org.apache.mesos.version=1.4.0
6
- LABEL org.apache.spark.version=2.2.0
7
- LABEL net.java.openjdk.version=1.8.0
8
- LABEL org.python.version=3.6
9
- LABEL org.centos=7.3.1611
3
+ LABEL maintainer="USGS EROS LCMAP http://eros.usgs.gov http://github.com/usgs-eros/lcmap-firebird" \
4
+ description="CentOS based Spark-Mesos image for LCMAP" \
5
+ org.apache.mesos.version=1.4.0 \
6
+ org.apache.spark.version=2.2.0 \
7
+ net.java.openjdk.version=1.8.0 \
8
+ org.python.version=3.6 \
9
+ org.centos=7.3.1611
10
10
11
11
EXPOSE 8081 4040 8888
12
12
13
13
RUN yum update -y && \
14
- yum install -y sudo gcc bzip2 java-1.8.0-openjdk-devel.x86_64 && \
14
+ yum install -y sudo java-1.8.0-openjdk-devel.x86_64 && \
15
15
yum install -y http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-3.noarch.rpm && \
16
16
yum install -y mesos && \
17
- yum -y downgrade mesos-1.4.0
17
+ yum -y downgrade mesos-1.4.0 && \
18
+ sudo yum clean all && \
19
+ sudo rm -rf /var/cache/yum && \
20
+ localedef -i en_US -f UTF-8 en_US.UTF-8
18
21
19
- RUN localedef -i en_US -f UTF-8 en_US.UTF-8
22
+ ENV HOME=/home/lcmap \
23
+ USER=lcmap \
24
+ SPARK_HOME=/opt/spark \
25
+ SPARK_NO_DAEMONIZE=true \
26
+ PYSPARK_PYTHON=python3 \
27
+ MESOS_NATIVE_JAVA_LIBRARY=/usr/lib/libmesos.so \
28
+ LC_ALL=en_US.UTF-8 \
29
+ LANG=en_US.UTF-8
20
30
31
+ ENV PATH=$SPARK_HOME/bin:${PATH}:$HOME/miniconda3/bin \
32
+ PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$SPARK_HOME/python/lib/pyspark.zip
33
+
21
34
# #########################################################################
22
35
# Add a user to run as inside the container. This will prevent accidental
23
36
# foo while mounting volumes. To enable access between external and
@@ -27,51 +40,51 @@ RUN adduser -ms /bin/bash lcmap && \
27
40
echo "lcmap ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/lcmap && \
28
41
chmod 0440 /etc/sudoers.d/lcmap
29
42
30
- ENV HOME=/home/lcmap
31
- ENV USER=lcmap
32
43
USER $USER
33
44
WORKDIR $HOME
34
45
# #########################################################################
35
46
36
- ENV SPARK_HOME=/opt/spark
37
- ENV SPARK_NO_DAEMONIZE=true
38
- ENV PYSPARK_PYTHON=$HOME/miniconda3/bin/python3
39
- ENV MESOS_NATIVE_JAVA_LIBRARY=/usr/lib/libmesos.so
40
- ENV PATH=$HOME/miniconda3/bin:$SPARK_HOME/bin:${PATH}
41
- ENV PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$SPARK_HOME/python/lib/pyspark.zip
42
- ENV LC_ALL=en_US.UTF-8
43
- ENV LANG=en_US.UTF-8
44
-
47
+ # Install Spark
45
48
RUN cd /opt && \
46
49
sudo curl https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.7.tgz -o spark.tgz && \
47
50
sudo tar -zxf spark.tgz && \
48
51
sudo rm -f spark.tgz && \
49
52
sudo ln -s spark-* spark
50
53
51
- RUN curl https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o mc.sh && \
54
+ # Install miniconda.
55
+ # Install numpy from default repo for mkl based implementation.
56
+ RUN sudo yum install -y bzip2 && \
57
+ curl https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -o mc.sh && \
52
58
chmod 755 mc.sh && \
53
59
./mc.sh -b && \
54
60
rm -rf mc.sh && \
55
- conda config --add channels conda-forge && \
56
- conda install cython gdal --yes
61
+ sudo yum erase -y bzip2 && \
62
+ sudo yum clean all && \
63
+ conda install python=3.6 pip numpy cython scipy scikit-learn=0.18 --yes
57
64
58
- COPY firebird firebird
59
- COPY notebook notebook
60
- COPY resources resources
61
- COPY test test
62
- COPY Makefile .
63
- COPY pom.xml .
64
- COPY README.md .
65
- COPY setup.py .
66
- COPY version.txt .
65
+ # Copy firebird project artifacts into image
66
+ RUN mkdir -p firebird
67
+ COPY pom.xml .test_env test.sh setup.py version.txt Makefile README.rst ./firebird/
68
+ COPY firebird firebird/firebird
69
+ COPY notebook firebird/notebook
70
+ COPY test firebird/test
67
71
COPY log4j.properties $SPARK_HOME/conf/log4j.properties
68
- RUN sudo chown -R lcmap:lcmap .
69
72
70
- RUN pip install -e .[test,dev]
71
-
72
- RUN cd $HOME && \
73
- sudo yum install -y maven && \
73
+ # Install spark-cassandra-connector
74
+ RUN cd $HOME/firebird && \
75
+ sudo yum install -y maven && \
74
76
sudo mvn dependency:copy-dependencies -DoutputDirectory=$SPARK_HOME/jars && \
75
77
sudo yum erase -y maven && \
76
78
sudo yum clean all && \
77
- conda clean -all
79
+ sudo rm -rf /var/cache/yum && \
80
+ sudo rm -rf /root/.cache /root/.m2
81
+
82
+ # Do not install the test or dev profiles in this image, control image size
83
+ # RUN sudo /usr/local/bin/pip install -e .[test,dev]
84
+ RUN sudo chown -R lcmap:lcmap . && \
85
+ sudo yum -y install gcc Cython && \
86
+ sudo $HOME/miniconda3/bin/pip install -e firebird/.[test,dev] && \
87
+ sudo sh -c 'find . | grep -E "(__pycache__|\. pyc|\. pyo$)" | xargs rm -rf' && \
88
+ sudo yum erase -y gcc && \
89
+ sudo yum clean all && \
90
+ sudo rm -rf /var/cache/yum
0 commit comments