# How to build the elasitic docker images in my local to do some testing , and if there are some steps or docs

**URL:** <https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372>\
**Category:** Elasticsearch\
**Tags:** docker\
**Created:** [May 13, 2020, 6:32am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372 "2020-05-13T06:32:53Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![xauthulei](https://avatars.discourse-cdn.com/v4/letter/x/e68b1a/32.png) [@xauthulei](https://discuss.elastic.co/u/xauthulei)\
**Post date:** [May 13, 2020, 6:32am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372/1 "2020-05-13T06:32:53Z")

</div>

I am confuse to the docker images build, I want have try in my local and with private ID

---

<div class="post-metadata">

**Author:** ![jsu](https://avatars.discourse-cdn.com/v4/letter/j/73ab20/32.png) [@jsu](https://discuss.elastic.co/u/jsu)\
**Post date:** [May 13, 2020, 7:54am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372/2 "2020-05-13T07:54:24Z")

</div>

Here is the Elastic documentation:

[https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html)

And here is the docker documentation just in case:

> **[Docker Documentation](https://docs.docker.com/)**
>
> Get started with Docker Try our multi-part walkthrough that covers writing your first app, data storage, networking, and swarms, and ends with your app running on production servers in the...

---

<div class="post-metadata">

**Author:** ![xauthulei](https://avatars.discourse-cdn.com/v4/letter/x/e68b1a/32.png) [@xauthulei](https://discuss.elastic.co/u/xauthulei)\
**Post date:** [May 13, 2020, 8:03am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372/3 "2020-05-13T08:03:58Z")

</div>

Thanks @jsu . could I know how to build the images from the code "[https://github.com/xauthulei/elasticsearch/tree/7.6/distribution/docker](https://github.com/xauthulei/elasticsearch/tree/7.6/distribution/docker)" .

---

<div class="post-metadata">

**Author:** ![xauthulei](https://avatars.discourse-cdn.com/v4/letter/x/e68b1a/32.png) [@xauthulei](https://discuss.elastic.co/u/xauthulei)\
**Post date:** [May 13, 2020, 8:13am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372/4 "2020-05-13T08:13:56Z")

</div>

I am willing to build it based on a Dockerfile. But it is confuse to me how to create it ? from the code level that is seems to get from Gradle, right ?

---

<div class="post-metadata">

**Author:** ![jsu](https://avatars.discourse-cdn.com/v4/letter/j/73ab20/32.png) [@jsu](https://discuss.elastic.co/u/jsu)\
**Post date:** [May 13, 2020, 9:45am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372/5 "2020-05-13T09:45:26Z")

</div>

I'm not sure I'm following you here.

If you want to use the official docker image, you don't need to build it yourself, you can simply pull it as stated in the doc:

```auto
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2

```

So if you want to run a single node for testing:

```auto
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.2

```

And if you want a multi-node cluster, use Docker Compose (for dev/testing, not in production):

```auto
version: '2.2'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local

networks:
  elastic:
    driver: bridge

```

All this is just taken from [https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html) .

And if you want to build your own image, you can do it using the official image as a base (FROM),  
see example here on how to do that: [https://docs.docker.com/get-started/part2/](https://docs.docker.com/get-started/part2/)

And here is the official doc for Dockerfiles: [https://docs.docker.com/engine/reference/builder/](https://docs.docker.com/engine/reference/builder/)

Does that help or am I missing your point?

---

<div class="post-metadata">

**Author:** ![xauthulei](https://avatars.discourse-cdn.com/v4/letter/x/e68b1a/32.png) [@xauthulei](https://discuss.elastic.co/u/xauthulei)\
**Post date:** [May 13, 2020, 9:52am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372/6 "2020-05-13T09:52:35Z")

</div>

Thanks @jsu, Currently I want to build a private images. Here I fond this from its readme:  
`In order to create a distribution, simply run the `./gradlew assemble` command in the cloned directory.

The distribution for each project will be created under the `build/distributions` directory in that project.`

Is that will create a images locally or push to my private repository ? However I got following error:

```auto
> Task :server:compileJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
An exception has occurred in the compiler (14.0.1). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
java.lang.NullPointerException
        at jdk.compiler/com.sun.tools.javac.code.Symbol$ClassSymbol.isSubClass(Symbol.java:1365)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.accessClass(Lower.java:1089)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.accessSymbol(Lower.java:960)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.access(Lower.java:1205)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.visitSelect(Lower.java:3928)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:2276)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.translate(Lower.java:2081)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.visitApply(Lower.java:3016)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1736)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.translate(Lower.java:2081)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:256)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCExpressionStatement.accept(JCTree.java:1523)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.translate(Lower.java:2081)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:70)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:167)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:3539)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1038)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.translate(Lower.java:2081)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:150)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2721)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2633)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:884)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.translate(Lower.java:2081)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2223)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:786)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.translate(Lower.java:2081)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:2223)
        at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:786)
        at jdk.compiler/com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:58)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.translate(Lower.java:2081)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.translate(Lower.java:2100)
        at jdk.compiler/com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:4005)
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1590)
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.desugar(JavaCompiler.java:1437)
        at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:972)
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:147)
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
        at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
        at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:93)
        at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57)
        at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:54)
        at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:39)
        at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:100)
        at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:52)
        at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)
        at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:51)
        at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:37)
        at org.gradle.api.internal.tasks.compile.CleaningJavaCompiler.execute(CleaningJavaCompiler.java:53)
        at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory.lambda$createRebuildAllCompiler$0(IncrementalCompilerFactory.java:98)
        at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:60)
        at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:44)
        at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:59)
        at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:51)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler.execute(CompileJavaBuildOperationReportingCompiler.java:51)
        at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:211)
        at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:182)
        at jdk.internal.reflect.GeneratedMethodAccessor894.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
        at org.gradle.api.internal.project.taskfactory.IncrementalInputsTaskAction.doExecute(IncrementalInputsTaskAction.java:32)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)
        at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:568)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.base/java.lang.Thread.run(Thread.java:832)

> Task :server:compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':server:compileJava'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 3m 15s

```

---

<div class="post-metadata">

**Author:** ![jsu](https://avatars.discourse-cdn.com/v4/letter/j/73ab20/32.png) [@jsu](https://discuss.elastic.co/u/jsu)\
**Post date:** [May 13, 2020, 10:10am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372/7 "2020-05-13T10:10:11Z")

</div>

Well, you can still build a private image using `FROM elasticsearch:7.6.2` in your Dockerfile.

Otherwise, I found the original Dockerfile used (I think, I'm not working for Elastic, so I might be wrong here): [https://github.com/xauthulei/elasticsearch/blob/7.6/distribution/docker/src/docker/Dockerfile](https://github.com/xauthulei/elasticsearch/blob/7.6/distribution/docker/src/docker/Dockerfile)

But again, you don't need to use this one to build your own Elasticsearch Docker image.

And I don't know why you can't build it from source with the `.gradle` I'm sorry. But again, from the title of your topic, you don't need to do this.

---

<div class="post-metadata">

**Author:** ![xauthulei](https://avatars.discourse-cdn.com/v4/letter/x/e68b1a/32.png) [@xauthulei](https://discuss.elastic.co/u/xauthulei)\
**Post date:** [May 14, 2020, 1:23am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372/8 "2020-05-14T01:23:55Z")

</div>

No matter what, Thanks for helpful messages.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [June 11, 2020, 1:23am UTC](https://discuss.elastic.co/t/how-to-build-the-elasitic-docker-images-in-my-local-to-do-some-testing-and-if-there-are-some-steps-or-docs/232372/9 "2020-06-11T01:23:56Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
