== Building containers To build a container _Docker_ uses a file called +Dockerfile+ http://docs.docker.com/reference/builder/. *Arquillian Cube* also supports building and running a container from a +Dockerfile+. To set that *Arquillian Cube* must build the container, the +image+ property must be changed to +buildImage+ and add the location of +Dockerfile+. Let's see previous example but instead of creating a container from a predefined image, we are going to build one: [source, yaml] .arquillian.xml ---- tomcat: buildImage: # <1> dockerfileLocation: src/test/resources-tomcat-7-dockerfile/tomcat # <2> noCache: true # <3> remove: true # <4> dockerfileName: my-dockerfile # <5> await: strategy: polling env: [JAVA_OPTS=-Dcom.sun.management.jmxremote.port=8089 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false] portBindings: [8089/tcp, 8080/tcp] ---- <1> +buildImage+ section is used in front of +image+. In case of both sections present in a document, +image+ section has preference over +buildImage+. <2> +dockerfileLocation+ contains the location of +Dockerfile+ and all files required to build the container. <3> Property to enable or disable the no cache attribute. <4> Property to enable or disable the remove attribute. <5> Property to set the dockerfile name to be used instead of the default ones. TIP: +dockerfileLocation+ can be a directory that must contains +Dockerfile+ in root directory (in case you don't set _dockerfileName_ property), also a +tar.gz+ file or a _URL_ pointing to a +tar.gz+ file. An example of +Dockerfile+ is: [source, properties] .src/test/resources-tomcat-7-dockerfile/tomcat/Dockerfile ---- FROM tutum/tomcat:7.0 ENV JAVA_OPTS -Dcom.sun.management.jmxremote.port=8089 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false ADD tomcat-users.xml /tomcat/conf/ # <1> EXPOSE 8089 CMD ["/tomcat/bin/catalina.sh","run"] ---- <1> +tomcat-users.xml+ file is located at same directory as +Dockerfile+.