-
Notifications
You must be signed in to change notification settings - Fork 29
/
buildimage.sh
executable file
·51 lines (47 loc) · 2.02 KB
/
buildimage.sh
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
#!/usr/bin/env sh
if ! [ -x "$(command -v docker)" ]; then
cat << ENDOFOUTPUT
You need to install docker ( https://www.docker.com/ ) to build a docker image'
On a Ubuntu 20.04 the commands below are the best way to do it.
There are methods that are a lot easier, but this is the best:
#As root run (replace YOURUSERNAME by your username):
apt-get -y install apt-transport-https ca-certificates curl software-properties-common && \\
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && apt-key fingerprint 0EBFCD88 && \\
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" && \\
apt-get update && apt-get -y install docker-ce && usermod -G docker -a YOURUSERNAME && \\
echo '{ "storage-driver": "overlay2" }' > /etc/docker/daemon.json && \\
apt-get -y install docker-compose docker-ce-cli containerd.io
ENDOFOUTPUT
exit 1
fi
if [ ! -z $1 ] && [ $1 = "build" ] ; then
cat << ENDOFDOCKERFILE > Dockerfile
FROM python:3
RUN pip3 install TB2J
WORKDIR /root
ENDOFDOCKERFILE
if [ ! -z $2 ] && [ $2 = "withrepo" ] ; then
cat << ENDOFDOCKERFILE >> Dockerfile
RUN git clone https://github.com/mailhexu/TB2J
ENDOFDOCKERFILE
fi
$(command -v docker) build -t tb2j .
rm Dockerfile
elif [ ! -z $1 ] && [ $1 = "run" ] ; then
$(command -v docker) run -it --name tb2j tb2j /bin/bash
elif [ ! -z $1 ] && [ $1 = "rm" ] ; then
$(command -v docker) rm tb2j
elif [ ! -z $1 ] && [ $1 = "rmi" ] ; then
$(command -v docker) rmi tb2j
else
cat << ENDOFOUTPUT
$0 build -> Build the 'tb2j' dockerimage
$0 build withrepo -> Also include the git repo in the image (contains examples)
$0 run -> Run bash in a new container based on this image
$0 test -> Runs 'TB2J/examples/abinit-w90/SrMnO3/get_J.sh' as test.
(This only works when the image is build with 'withrepo')
$0 rm -> Remove the container after stopping it
$0 rmi -> Remove the image
I suggest to only build with this script and do the running/removing manually
ENDOFOUTPUT
fi