"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1770],{4137:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return h}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),u=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},s=function(e){var t=u(e.components);return a.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=u(n),h=i,m=d["".concat(p,".").concat(h)]||d[h]||c[h]||o;return n?a.createElement(m,r(r({ref:t},s),{},{components:n})):a.createElement(m,r({ref:t},s))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,r[1]=l;for(var u=2;u<o;u++)r[u]=n[u];return a.createElement.apply(null,r)}return a.createElement.apply(null,n)}d.displayName="MDXCreateElement"},8788:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return l},contentTitle:function(){return p},metadata:function(){return u},toc:function(){return s},default:function(){return d}});var a=n(7462),i=n(3366),o=(n(7294),n(4137)),r=["components"],l={title:"Build Docker Images",sidebar_label:"build-docker",description:"Build Docker Images",draft:!0},p=void 0,u={unversionedId:"misc/build-docker",id:"misc/build-docker",isDocsHomePage:!1,title:"Build Docker Images",description:"Build Docker Images",source:"@site/docs/misc/build-docker.md",sourceDirName:"misc",slug:"/misc/build-docker",permalink:"/docs/misc/build-docker",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/misc/build-docker.md",tags:[],version:"current",frontMatter:{title:"Build Docker Images",sidebar_label:"build-docker",description:"Build Docker Images",draft:!0}},s=[{value:"Pinot",id:"pinot",children:[{value:"How to build a docker image",id:"how-to-build-a-docker-image",children:[]}]},{value:"How to publish a docker image",id:"how-to-publish-a-docker-image",children:[]},{value:"Kubernetes Examples",id:"kubernetes-examples",children:[]},{value:"Pinot Presto",id:"pinot-presto",children:[{value:"How to build",id:"how-to-build",children:[]},{value:"How to push",id:"how-to-push",children:[]},{value:"Configuration",id:"configuration",children:[]},{value:"Volumes",id:"volumes",children:[]},{value:"Kubernetes Examples",id:"kubernetes-examples-1",children:[]}]},{value:"Pinot Superset",id:"pinot-superset",children:[{value:"How to build",id:"how-to-build-1",children:[]},{value:"Configuration",id:"configuration-1",children:[]},{value:"Volumes",id:"volumes-1",children:[]},{value:"Kubernetes Examples",id:"kubernetes-examples-2",children:[]}]}],c={toc:s};function d(e){var t=e.components,n=(0,i.Z)(e,r);return(0,o.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The scripts to build Pinot related docker images is located at ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/apache/pinot/tree/master/docker/images"},"here")),(0,o.kt)("p",null,"You can access those scripts by running below command to checkout Pinot repo:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:apache/pinot.git pinot\ncd pinot/docker/images\n")),(0,o.kt)("p",null,"You can find current supported 3 images in this directory:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Pinot: Pinot all-in-one distribution image"),(0,o.kt)("li",{parentName:"ul"},"Pinot-Presto: Presto image with Presto-Pinot Connector built-in."),(0,o.kt)("li",{parentName:"ul"},"Pinot-Superset: Superset image with Pinot connector built-in.")),(0,o.kt)("h2",{id:"pinot"},"Pinot"),(0,o.kt)("p",null,"This is a docker image of ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/apache/pinot"},"Apache Pinot")),(0,o.kt)("h3",{id:"how-to-build-a-docker-image"},"How to build a docker image"),(0,o.kt)("p",null,"There is a docker build script which will build a given Git repo/branch and tag the image."),(0,o.kt)("p",null,"Usage:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"./docker-build.sh [Docker Tag] [Git Branch] [Pinot Git URL]\n")),(0,o.kt)("p",null,"This script will check out Pinot Repo ",(0,o.kt)("inlineCode",{parentName:"p"},"[Pinot Git URL]")," on branch ",(0,o.kt)("inlineCode",{parentName:"p"},"[Git Branch]")," and build the docker image for that. ",(0,o.kt)("br",null),"\nThe docker image is tagged as ",(0,o.kt)("inlineCode",{parentName:"p"},"[Docker Tag]"),". ",(0,o.kt)("br",null),"\nDocker Tag: Name and tag your docker image. Default is ",(0,o.kt)("inlineCode",{parentName:"p"},"pinot:latest"),". ",(0,o.kt)("br",null),"\nGit Branch: The Pinot branch to build. Default is master. ",(0,o.kt)("br",null),"\nPinot Git URL: The Pinot Git Repo to build, users can set it to their own fork. ",(0,o.kt)("br",null),"\nPlease note that, the URL is ",(0,o.kt)("inlineCode",{parentName:"p"},"https://")," based, not ",(0,o.kt)("inlineCode",{parentName:"p"},"git://"),". ",(0,o.kt)("br",null),"\nDefault is the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/apache/pinot.git"},"Apache Repo: https://github.com/apache/pinot.git"),". ",(0,o.kt)("br",null)),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Example of building and tagging a snapshot on your own fork:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"./docker-build.sh pinot_fork:snapshot-5.2 snapshot-5.2 https://github.com/your_own_fork/pinot.git\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Example of building a release version:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"./docker-build.sh pinot:release-0.1.0 release-0.1.0 https://github.com/apache/pinot.git\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Example of building current master branch as a snapshot:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"./docker-build.sh apachepinot/pinot:0.3.0-SNAPSHOT master\n")),(0,o.kt)("h2",{id:"how-to-publish-a-docker-image"},"How to publish a docker image"),(0,o.kt)("p",null,"Script ",(0,o.kt)("inlineCode",{parentName:"p"},"docker-push.sh")," publishes a given docker image to your docker registry.\nIn order to push to your own repo, the image needs to be explicitly tagged with the repo name."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Example of publishing an image to ",(0,o.kt)("inlineCode",{parentName:"li"},"[apachepinot/pinot](https://hub.docker.com/u/apachepinot/repository/docker/apachepinot/pinot)")," dockerHub repo.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"./docker-push.sh apachepinot/pinot:latest\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"You can also tag a built image, then push it.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker tag pinot:release-0.1.0 apachepinot/pinot:release-0.1.0\ndocker push apachepinot/pinot:release-0.1.0\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Script docker-build-and-push.sh builds and publishes this docker image to your docker registry after build.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"Example of building and publishing an image to ",(0,o.kt)("inlineCode",{parentName:"p"},"[apachepinot/pinot](https://hub.docker.com/u/apachepinot/repository/docker/apachepinot/pinot)")," dockerHub repo."))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"./docker-build-and-push.sh apachepinot/pinot:latest master https://github.com/apache/pinot.git\n")),(0,o.kt)("h2",{id:"kubernetes-examples"},"Kubernetes Examples"),(0,o.kt)("p",null,"Please refer to ",(0,o.kt)("a",{parentName:"p",href:"/docs/administration/installation/cloud/on-premise"},"Kubernetes Quickstart")," for deployment examples."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/docs/administration/installation/cloud/on-premise"},"Kubernetes Quickstart")),(0,o.kt)("h2",{id:"pinot-presto"},"Pinot Presto"),(0,o.kt)("p",null,"Docker image for Presto with Pinot integration.\nThis docker build project is specialized for Pinot."),(0,o.kt)("h3",{id:"how-to-build"},"How to build"),(0,o.kt)("p",null,"Usage:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"./docker-build.sh [Docker Tag] [Git Branch] [Presto Git URL]\n")),(0,o.kt)("p",null,"This script will check out Pinot Repo ",(0,o.kt)("inlineCode",{parentName:"p"},"[Pinot Git URL]")," on branch ",(0,o.kt)("inlineCode",{parentName:"p"},"[Git Branch]")," and build the docker image for that. ",(0,o.kt)("br",null),"\nThe docker image is tagged as ",(0,o.kt)("inlineCode",{parentName:"p"},"[Docker Tag]"),". ",(0,o.kt)("br",null),"\nDocker Tag: Name and tag your docker image. Default is ",(0,o.kt)("inlineCode",{parentName:"p"},"pinot:latest"),". ",(0,o.kt)("br",null),"\nGit Branch: The Pinot branch to build. Default is master. ",(0,o.kt)("br",null),"\nPinot Git URL: The Pinot Git Repo to build, users can set it to their own fork. ",(0,o.kt)("br",null),"\nPlease note that, the URL is ",(0,o.kt)("inlineCode",{parentName:"p"},"https://")," based, not ",(0,o.kt)("inlineCode",{parentName:"p"},"git://"),". ",(0,o.kt)("br",null),"\nDefault is the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/apache/pinot.git"},"Apache Repo: https://github.com/apache/pinot.git"),". ",(0,o.kt)("br",null)),(0,o.kt)("h3",{id:"how-to-push"},"How to push"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker push apachepinot/pinot-presto:latest\n")),(0,o.kt)("h3",{id:"configuration"},"Configuration"),(0,o.kt)("p",null,"Follow the instructions provided by Presto for writing your own configuration files under etc directory."),(0,o.kt)("h3",{id:"volumes"},"Volumes"),(0,o.kt)("p",null,"The image defines two data volumes: one for mounting configuration into the container, and one for data.\nThe configuration volume is located alternatively at ",(0,o.kt)("inlineCode",{parentName:"p"},"/home/presto/etc"),", which contains all the configuration and plugins.\nThe data volume is located at ",(0,o.kt)("inlineCode",{parentName:"p"},"/home/presto/data"),"."),(0,o.kt)("h3",{id:"kubernetes-examples-1"},"Kubernetes Examples"),(0,o.kt)("p",null,"Please refer to presto-coordinator.yaml as k8s deployment example."),(0,o.kt)("h2",{id:"pinot-superset"},"Pinot Superset"),(0,o.kt)("p",null,"Docker image for Superset with Pinot integration.\nThis docker build project is based on Project docker-superset and specialized for Pinot."),(0,o.kt)("h3",{id:"how-to-build-1"},"How to build"),(0,o.kt)("p",null,"Please modify file ",(0,o.kt)("inlineCode",{parentName:"p"},"Makefile")," to change image and ",(0,o.kt)("inlineCode",{parentName:"p"},"superset_version")," accordingly.\nBelow command will build docker image and tag it as ",(0,o.kt)("inlineCode",{parentName:"p"},"superset_version")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"latest"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"make latest\n")),(0,o.kt)("p",null,"You can also build directly with ",(0,o.kt)("inlineCode",{parentName:"p"},"docker build")," command by setting arguments:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker build \\\n    --build-arg NODE_VERSION=latest \\\n    --build-arg PYTHON_VERSION=3.6 \\\n    --build-arg SUPERSET_VERSION=0.34.1 \\\n    --tag apachepinot/pinot-superset:0.34.1 \\\n    --target build .\n")),(0,o.kt)("p",null,"How to push"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"make push\n")),(0,o.kt)("h3",{id:"configuration-1"},"Configuration"),(0,o.kt)("p",null,"Follow the ",(0,o.kt)("a",{parentName:"p",href:"https://superset.apache.org/installation.html#configuration"},"instructions")," provided by Apache Superset for writing your own superset_config.py."),(0,o.kt)("p",null,"Place this file in a local directory and mount this directory to /etc/superset inside the container. This location\nis included in the image's ",(0,o.kt)("inlineCode",{parentName:"p"},"PYTHONPATH"),". Mounting this file to a different location is possible, but it will need to be in the PYTHONPATH."),(0,o.kt)("h3",{id:"volumes-1"},"Volumes"),(0,o.kt)("p",null,"The image defines two data volumes: one for mounting configuration into the container, and one for data (logs, SQLite DBs, &c)."),(0,o.kt)("p",null,"The configuration volume is located alternatively at ",(0,o.kt)("inlineCode",{parentName:"p"},"/etc/superset")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"/home/superset"),"; either is acceptable. Both of these directories are included in the PYTHONPATH of the image. Mount any configuration (specifically the superset_config.py file) here to have it read by the app on startup."),(0,o.kt)("p",null,"The data volume is located at ",(0,o.kt)("inlineCode",{parentName:"p"},"/var/lib/superset")," and it is where you would mount your SQLite file (if you are using that as your backend), or a volume to collect any logs that are routed there. This location is used as the value of the ",(0,o.kt)("inlineCode",{parentName:"p"},"SUPERSET_HOME")," environmental variable."),(0,o.kt)("h3",{id:"kubernetes-examples-2"},"Kubernetes Examples"),(0,o.kt)("p",null,"Please refer to superset.yaml as k8s deployment example."))}d.isMDXComponent=!0}}]);