FROM centos:7

# System dependent

RUN yum -y update

RUN yum -y install sudo openssh-server
RUN sed -i 's@^Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin$@Defaults    secure_path = /usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin@' \
	/etc/sudoers

RUN yum -y groupinstall "Development Tools"

RUN yum -y install epel-release openssl-devel postgresql-devel postgresql \
	postgresql-server fuse fuse-devel libacl-devel

RUN yum -y --enablerepo=epel install globus-gssapi-gsi-devel globus-simple-ca \
	globus-gsi-cert-utils-progs globus-proxy-utils

## for test
RUN yum -y install nc

## for debug
RUN yum -y install ldns iproute2 net-tools which bind-utils man gdb valgrind \
	strace nano emacs-nox telnet less

ENV GFDOCKER_DIST_NAME centos


# System independent (incompleteness. see setup-univ.sh.)

ARG GFDOCKER_USERNAME_PREFIX
ARG GFDOCKER_PRIMARY_USER
ARG GFDOCKER_NUM_GFMDS
ARG GFDOCKER_NUM_GFSDS
ARG GFDOCKER_NUM_USERS
ARG GFDOCKER_HOSTNAME_PREFIX_GFMD
ARG GFDOCKER_HOSTNAME_PREFIX_GFSD

RUN for i in $(seq 1 "$GFDOCKER_NUM_USERS"); do \
		useradd -m -s /bin/bash -U \
			"${GFDOCKER_USERNAME_PREFIX}${i}"; \
	done

# chown option does not use variables.
# see https://github.com/moby/moby/issues/35018 for details.
# XXX FIXME: use variable.
# NOTE: Enable buildkit
#COPY --chown=${GFDOCKER_PRIMARY_USER}:${GFDOCKER_PRIMARY_USER} \
#	. "/home/${GFDOCKER_PRIMARY_USER}/gfarm"
#COPY --chown=${GFDOCKER_PRIMARY_USER}:${GFDOCKER_PRIMARY_USER} \
#	gfarm2fs "/home/${GFDOCKER_PRIMARY_USER}/gfarm2fs"

# "chown -R" is too slow.
COPY . /tmp/gfarm
COPY gfarm2fs /tmp/gfarm2fs
RUN rsync -a --chown=${GFDOCKER_PRIMARY_USER}:${GFDOCKER_PRIMARY_USER} \
	/tmp/gfarm "/home/${GFDOCKER_PRIMARY_USER}"
RUN rsync -a --chown=${GFDOCKER_PRIMARY_USER}:${GFDOCKER_PRIMARY_USER} \
	/tmp/gfarm2fs "/home/${GFDOCKER_PRIMARY_USER}"

RUN "/home/${GFDOCKER_PRIMARY_USER}/gfarm/docker/dev/common/setup-univ.sh"

CMD ["/sbin/init"]
