--- title: "Docker Compose" --- The Docker Compose integration enables you to inject environment variables from Infisical into the containers defined in your compose file. ## Add the CLI to your Dockerfile(s) Follow steps 1 through 3 on our [guide to configure Infisical CLI](../integrations/docker) in your Dockerfile. ## Generate Infisical Token In order for Infisical CLI to authenticate and retrieve your project's secrets without exposing your login credentials, you must generate a Infisical Token. To learn how, visit [Infisical Token](../getting-started/cli/infisical-token). Once you have generated the token, keep it handy. If you have multiple services and they do not use the same secrets, you will have to generate a Infisical Token for each service. ## Tell Docker Compose your Infisical Token For each service you want to inject secrets into, set an environment variable called `INFISICAL_TOKEN` equal to a helpful identifier variable. This will ensure that you can set Infisical Tokens for multiple services. For the example below, we have set `INFISICAL_TOKEN_FOR_WEB` and `INFISICAL_TOKEN_FOR_API` as the `INFISICAL_TOKEN` for the corresponding service. ```yaml # Example Docker Compose file services: web: build: . image: auledge-frontend container_name: auledge-frontend environment: - INFISICAL_TOKEN=${INFISICAL_TOKEN_FOR_WEB} api: build: . image: auledge-backend container_name: auledge-backend environment: - INFISICAL_TOKEN=${INFISICAL_TOKEN_FOR_API} ``` ## Export shell variables Next, set the shell variables you defined in your compose file. This can be done manually or via your CI/CD environment. Once done, it will be used to populate the corresponding `INFISICAL_TOKEN` in your Docker Compose file. ```bash #Example # Token refers to the token we generated in step 2 for this service export INFISICAL_TOKEN_FOR_WEB= # Token refers to the token we generated in step 2 for this service export INFISICAL_TOKEN_FOR_API= # Then run your compose file in the same terminal. docker-compose ... ```