# Third-party modules via docker-compose

**URL:** <https://forum.inductiveautomation.com/t/third-party-modules-via-docker-compose/69611>\
**Category:** Ignition\
**Created:** [February 9, 2023, 9:19am UTC](https://forum.inductiveautomation.com/t/third-party-modules-via-docker-compose/69611 "2023-02-09T09:19:04Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jardel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jardel/32/27369_2.png) [@jardel](https://forum.inductiveautomation.com/u/jardel)\
**Post date:** [February 9, 2023, 9:19am UTC](https://forum.inductiveautomation.com/t/third-party-modules-via-docker-compose/69611/1 "2023-02-09T09:19:04Z")

</div>

I'm in a project where we're going to need several vms with ignition, and I'm using Docker to create the containers.

In the documentation I saw how to add the desired modules. Would it be possible to add third party modules in docker-compose.yaml?

Or would it be necessary to create an image with these modules?

---

<div class="post-metadata">

**Author:** ![Kevin.Collins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.collins/32/13497_2.png) [@Kevin.Collins](https://forum.inductiveautomation.com/u/Kevin.Collins)\
**Post date:** [February 11, 2023, 2:32am UTC](https://forum.inductiveautomation.com/t/third-party-modules-via-docker-compose/69611/2 "2023-02-11T02:32:09Z")

</div>

There are a couple of ways to go about this. The simplest way, if you're using Docker Compose, is to just have a folder (say `modules`) with the third-party modules you'd like to add. Then, simply bind-mount _the individual modules_ into place under `/usr/local/bin/user-lib/modules`. It might look something like this:

```auto
services:
  gateway1:
    ...
    volumes:
      - gateway1-data:/usr/local/bin/ignition/data
      - ./modules/MQTT-Engine-signed.modl:/usr/local/bin/ignition/user-lib/modules/MQTT-Engine.modl
    ...

```

Then, when you launch the services, they'll load that module alongside the others that are in that folder (from the base image). Combine this with the `GATEWAY_MODULES_ENABLED` environment variable to whitelist the other built-in modules as desired.

---

<div class="post-metadata">

**Author:** ![drewdin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/drewdin/32/3363_2.png) [@drewdin](https://forum.inductiveautomation.com/u/drewdin)\
**Post date:** [March 13, 2025, 1:41am UTC](https://forum.inductiveautomation.com/t/third-party-modules-via-docker-compose/69611/3 "2025-03-13T01:41:13Z")

</div>

do we need to also create the ./modules folder in the ignition folder along with the usr/local/bin?

---

<div class="post-metadata">

**Author:** ![Kevin.Collins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.collins/32/13497_2.png) [@Kevin.Collins](https://forum.inductiveautomation.com/u/Kevin.Collins)\
**Post date:** [March 13, 2025, 1:50pm UTC](https://forum.inductiveautomation.com/t/third-party-modules-via-docker-compose/69611/4 "2025-03-13T13:50:31Z")

</div>

In the example above, `modules` is a folder on the host system (relative to where the `docker-compose.yml` file is located) where you're keeping the third-party modules you're then linking into the container.

---

<div class="post-metadata">

**Author:** ![drewdin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/drewdin/32/3363_2.png) [@drewdin](https://forum.inductiveautomation.com/u/drewdin)\
**Post date:** [March 13, 2025, 3:24pm UTC](https://forum.inductiveautomation.com/t/third-party-modules-via-docker-compose/69611/5 "2025-03-13T15:24:40Z")

</div>

Hi @Kevin.Collins I put my modules in

```python
/usr/local/bin/ignition/user-lib/modules/MQTT-Engine.modl

```

I wasn't sure what the left of the colon needs to represent

---

<div class="post-metadata">

**Author:** ![Kevin.Collins](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.collins/32/13497_2.png) [@Kevin.Collins](https://forum.inductiveautomation.com/u/Kevin.Collins)\
**Post date:** [March 13, 2025, 7:29pm UTC](https://forum.inductiveautomation.com/t/third-party-modules-via-docker-compose/69611/6 "2025-03-13T19:29:35Z")

</div>

Sounds like reviewing [Bind-mounts](https://docs.docker.com/engine/storage/bind-mounts/) might be useful. Also of use might be the [`volumes`](https://github.com/compose-spec/compose-spec/blob/6632cc1064e1d5461e59cd80db8096367fc78840/05-services.md#volumes) section of the Compose spec.
