Docker compose on cross-platform environment – Docker

Photo of author
Written By M Ibrahim
boot2docker docker-compose docker-image

Quick Fix: Utilize Docker Compose version 2.4’s platform option within your compose files to specify the platform for each service. This facilitates cross-platform compatibility by allowing you to define a preferred platform for each service.

The Problem:

In a cross-platform environment with Windows and Linux containers, can Docker Compose be used to build three services: a Windows application container, a Linux application container, and a Linux database container? Is there any workaround if direct usage of Docker Compose is not possible due to OS-specific images?

The Solutions:

Solution 1: Multi-platform docker compose

Docker compose version 2.4 introduces the `platform` option, enabling you to specify the platform for each service in your compose file. This caters to cross-platform environments where you need to deploy your application across different operating systems. Supported platform values include:

  • platform: osx
  • platform: windows/amd64
  • platform: linux/arm64/v8

Example:

version: "2.4"

services:
  my-app-windows:
    image: my-app-windows
    platform: windows/amd64
  my-app-linux:
    image: my-app-linux
    platform: linux/amd64
  db:
    image: my-db
    platform: linux/amd64

This compose file defines three services: my-app-windows for Windows, my-app-linux for Linux, and db for Linux.

It’s noteworthy that the platform option is not supported in compose file version 3. You can find more details and examples on mixing Windows and Linux containers using Docker Compose in Microsoft’s blog.