-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
86 lines (65 loc) · 2.1 KB
/
Dockerfile
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
ARG IMAGE_NAME=debian:buster
FROM ${IMAGE_NAME}
RUN apt-get update && apt upgrade -y
RUN apt-get install -y \
wget \
lsb-release \
strace \
python3-pip \
opam \
sudo \
m4 \
vim
RUN codename=$(lsb_release -c | sed -e 's/Codename:\s\+//g') && \
wget https://apt.puppetlabs.com/puppet8-release-$codename.deb && \
dpkg -i puppet8-release-$codename.deb && \
apt-get install -y puppet git-core
ENV HOME /home/fsmove
ENV PUPPET_CONF_FILE=/etc/puppet/puppet.conf \
PROJECT_SRC=${HOME}/fsmove_src \
SCRIPTS_DIR=/usr/local/bin
# Create the fsmove user.
RUN useradd -ms /bin/bash fsmove && \
echo fsmove:fsmove | chpasswd && \
cp /etc/sudoers /etc/sudoers.bak && \
echo 'fsmove ALL=(root) NOPASSWD:ALL' >> /etc/sudoers
USER fsmove
WORKDIR ${HOME}
WORKDIR ${HOME}
# Setup OCaml compiler
RUN opam init -y --disable-sandboxing && \
eval $(opam env) && \
opam switch create 5.1.0 && \
opam switch 5.1.0
RUN eval $(opam env)
# Install OCaml packages
RUN eval `opam config env` && \
opam install -y ppx_jane core core_unix camlp-streams yojson dune \
ounit fd-send-recv fpath
RUN sudo apt install procps -y
# Add project files
# Setup the environment
ADD ./scripts ${SCRIPTS_DIR}
RUN mkdir ${PROJECT_SRC}
ADD ./src ${PROJECT_SRC}/src
ADD ./dune-project ${PROJECT_SRC}/dune-project
ADD ./fsmove.opam ${PROJECT_SRC}/fsmove.opam
ADD ./test ${PROJECT_SRC}/test
RUN sudo chown -R fsmove:fsmove ${PROJECT_SRC}
RUN echo "eval `opam config env`" >> ${HOME}/.bashrc
# Build fsmove
WORKDIR ${PROJECT_SRC}
RUN eval `opam config env` && dune runtest && dune build -p fsmove && dune install
USER root
RUN apt update
#RUN sudo cp -r ${HOME}/.opam /root/
# Puppet conf
RUN echo "[main]" > ${PUPPET_CONF_FILE} && \
echo "logdir=/var/log/puppet" >> ${PUPPET_CONF_FILE} && \
echo "vardir=/var/lib/puppet" >> ${PUPPET_CONF_FILE} && \
echo "ssldir=/var/lib/puppet/ssl" >> ${PUPPET_CONF_FILE} && \
echo "rundir=/var/run/puppet" >> ${PUPPET_CONF_FILE}
RUN cp ${HOME}/.opam/5.1.0/bin/fsmove /usr/local/bin
USER fsmove
WORKDIR ${HOME}
ENTRYPOINT ["process-module.sh"]