Created
September 26, 2019 15:24
-
-
Save robkooper/826576ca67c42034e15125108209ba2a to your computer and use it in GitHub Desktop.
PEcAn installation using docker only
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# this assumes a Ubuntu 18.04 VM | |
# run following as root | |
sudo -s | |
# install docker | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - | |
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list | |
apt-get -qq update | |
apt-get install -y docker-ce | |
# install docker-compose | |
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose | |
chmod +x /usr/local/bin/docker-compose | |
# add carya user | |
useradd -c "PEcAn Demo User" -g users -G docker -m -p $(echo "illinois" | openssl passwd -1 -stdin) -s /bin/bash carya | |
# switch to carya user | |
sudo -H -s -u carya | |
cd | |
# create some folder | |
mkdir -p ~/docker/{traefik,pecan,postgres,rabbitmq,portainer,site-library} | |
mkdir -o ~/docker/pecan/workflows | |
chmod 777 ~/docker/pecan/workflows | |
# clone pecan | |
git clone https://github.com/PecanProject/pecan.git | |
cd pecan | |
git checkout develop | |
cd | |
# setup docker environment | |
ln -s pecan/docker-compose.yml docker-compose.yml | |
# setup docker .env file | |
cat << EOF > .env | |
TRAEFIK_IPFILTER=172.16.0.0/12 | |
PECAN_VERSION=develop | |
EOF | |
# create docker-compose.override.yml | |
cat << EOF > docker-compose.override.yml | |
version: "3" | |
services: | |
web: | |
volumes: | |
- \${HOME}/pecan/web:/var/www/html/pecan | |
- \${HOME}/pecan/docker/web/config.docker.php:/var/www/html/pecan/config.php | |
rstudio: | |
volumes: | |
- site-library:/usr/local/lib/R/site-library/ | |
- \${HOME}/pecan:/home/carya/pecan | |
executor: | |
volumes: | |
- site-library:/usr/local/lib/R/site-library/ | |
- \${HOME}/pecan:/pecan | |
sipnet: | |
volumes: | |
- site-library:/usr/local/lib/R/site-library/ | |
ed2: | |
volumes: | |
- site-library:/usr/local/lib/R/site-library/ | |
maespa: | |
volumes: | |
- site-library:/usr/local/lib/R/site-library/ | |
# if you change any of the volumes you will need the volumes header. | |
volumes: | |
# use a local subfolders in data folder to store the volumes. | |
traefik: | |
driver_opts: | |
type: none | |
device: \${HOME}/docker/traefik | |
o: bind | |
postgres: | |
driver_opts: | |
type: none | |
device: \${HOME}/docker/postgres | |
o: bind | |
rabbitmq: | |
driver_opts: | |
type: none | |
device: \${HOME}/docker/rabbitmq | |
o: bind | |
pecan: | |
driver_opts: | |
type: none | |
device: \${HOME}/docker/pecan | |
o: bind | |
site-library: | |
driver_opts: | |
type: none | |
device: \${HOME}/docker/site-library | |
o: bind | |
portainer: | |
driver_opts: | |
type: none | |
device: \${HOME}/docker/portainer | |
o: bind | |
EOF | |
# start postgres | |
docker-compose up -d postgres | |
# copy site-library | |
docker run -ti --rm -v ~/docker/site-library:/site-library pecan/base:develop cp -dr /usr/local/lib/R/site-library/. /site-library | |
# initialize bety | |
docker-compose run --rm bety initialize | |
# start pecan | |
docker-compose up -d | |
# add data | |
docker run -ti --rm --network carya_pecan --volume carya_pecan:/data --env FQDN=docker pecan/data:develop | |
docker rmi pecan/data:develop | |
# build pecan | |
docker-compose exec executor /bin/sh -c 'cd /pecan && make' | |
# add cronjob | |
cat << EOF > /tmp/cronjob | |
@reboot (cd ${HOME} && /usr/local/bin/docker-compose pull --quiet && /usr/local/bin/docker-compose up --no-color --detach 2>&1 | grep -v up-to-date) | |
0 0 * * * (cd ${HOME} && /usr/local/bin/docker-compose pull --quiet && /usr/local/bin/docker-compose up --no-color --detach 2>&1 | grep -v up-to-date) | |
EOF | |
(crontab -l 2>/dev/null; cat /tmp/cronjob) | crontab - | |
# add compile script | |
cat << EOF > compile | |
#!/bin/sh | |
cd ${HOME} | |
docker-compose exec executor /bin/sh -c 'cd /pecan && make' | |
EOF | |
chmod 755 compile |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment