Adding container components to a devfile
To incorporate custom tools into the workspace, define an image-based configuration of a container in a workspace. Define this configuration by using the container component type.
A devfile can contain one or more components of the container type. The component name attribute identifies each component, including the container.
-
Define a component using the type
container.Acontainercomponentcomponents: - name: maven container: image: eclipse/maven-jdk8:latest volumeMounts: - name: mavenrepo path: /root/.m2 env: - name: ENV_VAR value: value endpoints: - name: maven-server targetPort: 3101 protocol: https secure: 'true' exposure: public memoryRequest: 256M memoryLimit: 1536M cpuRequest: 0.1 cpuLimit: 0.5 command: ['tail'] args: ['-f', '/dev/null']A minimalcontainercomponentschemaVersion: 2.1.0 metadata: name: mydevfile components: - name: go container: image: golang memoryLimit: 512Mi command: ['sleep', 'infinity']Specify the type of component using the
containerattribute. Use theimageattribute to specify the image for the component. When defining theimage, use container naming conventions. For example, theimageattribute in the preceding example refers to the container image,docker.io/library/golang:latest.Use the
containercomponent to augment the image with additional resources and information. This component allows you to integrate the tooling provided by the image with the application that consumes the devfile. -
Mounting project sources
For the
containercomponent to have access to the project sources, you must set themountSourcesattribute totrue.schemaVersion: 2.1.0 metadata: name: mydevfile components: - name: go container: image: golang memoryLimit: 512Mi mountSources: true command: ['sleep', 'infinity']The sources are mounted on a location stored in the
PROJECTS_ROOTenvironment variable that is made available in the running container of the image. This location defaults to/projects. IfsourceMappingis defined in the container, it overrides thePROJECT_ROOTvalue and mounts the source to the path defined bysourceMapping. -
Container Entrypoint
Use the
commandattribute of thecontainertype to modify theentrypointcommand of the container created from the image. The availability of thesleepcommand and the support for theinfinityargument depend on the base image used in the particular images.