Skip to content

Commit

Permalink
build: Makefile to build Dgraph inside docker container. (#6423)
Browse files Browse the repository at this point in the history
The script is useful for situations in which the host system creates a
binary that's incompatible with the docker container (e.g different
versions of glibc).
  • Loading branch information
martinmr authored Sep 29, 2020
1 parent 8f789c6 commit c789738
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 9 deletions.
4 changes: 4 additions & 0 deletions contrib/docker-build/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
install:
@docker-compose up
@sudo chown $(USER) ../../dgraph/dgraph
@mv ../../dgraph/dgraph $(GOPATH)/bin
13 changes: 13 additions & 0 deletions contrib/docker-build/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Docker build script

This directory contains a Makefile that can be used to build Dgraph inside the
official Dgraph Docker container. This is useful for situations when the host
system cannot be used to build a binary that will work with the container (for
example, if the host system has a different version of glibc).

## Usage

Run `make install` in this directory. The script will ask you for your password
in order to change ownership of the compiled binary. By default, files written
by Docker will be owned by root. This script also takes care of moving the
binary to $GOPATH/bin.
7 changes: 7 additions & 0 deletions contrib/docker-build/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y build-essential git golang
cd /dgraph/dgraph
make
14 changes: 14 additions & 0 deletions contrib/docker-build/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: "3.5"
services:
build:
image: dgraph/dgraph:latest
container_name: build
working_dir: /data/build
labels:
cluster: test
service: build
volumes:
- type: bind
source: ../../
target: /dgraph
command: /dgraph/contrib/docker-build/build.sh
23 changes: 14 additions & 9 deletions dgraph/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
# limitations under the License.
#

USER_ID = $(shell id -u)
BIN = dgraph
BUILD ?= $(shell git rev-parse --short HEAD)
BUILD_CODENAME = unnamed
Expand Down Expand Up @@ -90,14 +91,18 @@ install: jemalloc

jemalloc:
@if [ -z "$(HAS_JEMALLOC)" ] ; then \
mkdir -p /tmp/jemalloc-temp && cd /tmp/jemalloc-temp ; \
echo "Downloading jemalloc" ; \
curl -s -L ${JEMALLOC_URL} -o jemalloc.tar.bz2 ; \
tar xjf ./jemalloc.tar.bz2 ; \
cd jemalloc-5.2.1 ; \
./configure --with-jemalloc-prefix='je_' ; \
make ; \
echo "==== Need sudo access to install jemalloc" ; \
sudo make install ; \
mkdir -p /tmp/jemalloc-temp && cd /tmp/jemalloc-temp ; \
echo "Downloading jemalloc" ; \
curl -s -L ${JEMALLOC_URL} -o jemalloc.tar.bz2 ; \
tar xjf ./jemalloc.tar.bz2 ; \
cd jemalloc-5.2.1 ; \
./configure --with-jemalloc-prefix='je_' ; \
make ; \
if [ "$(USER_ID)" = "0" ]; then \
make install ; \
else \
echo "==== Need sudo access to install jemalloc" ; \
sudo make install ; \
fi \
fi

0 comments on commit c789738

Please sign in to comment.