FME Flow on Docker: Service URL not picking up host name

Liz Sanderson
Liz Sanderson
  • Updated

Considerations

If EXTERNALHOSTNAME has been set

When you installed FME Flow (formerly FME Server) with Docker, you set the EXTERNALHOSTNAME environment variable to the domain name.

Trying to run a job in FME Flow will result in this error:

If EXTERNALHOSTNAME has not been set

When you installed FME Flow with Docker, you did not set the EXTERNALHOSTNAME environment variable. FME Flow will default to localhost.

Your FME Flow appears to work fine for the most part, and jobs can be run from within the FME Flow web UI. However, you have encountered an issue using anything that creates a link to click from outside of FME Flow, such as the Data Download or Streaming service (they generate a URL to access the data), webhook URLs to run jobs, or FME Flow apps. 

To demonstrate, the Data Download URL that gets generated will have fmeflowweb:8080 as the host, and this does not let you download the data:


 

Why This Happens

The FME Flow web container is the container that needs to receive the request from the URLs.

This issue arises from the disconnect between the host machine’s network and the Docker internal network.

When EXTERNALHOSTNAME is not set and localhost is used, the service URLs default to fmeflowweb, which is resolvable by Docker, and jobs will run. When this URL is used outside of FME Flow, for example, copied into a new browser window, the fmeflowweb hostname cannot be resolved, resulting in the inability to access that URL.

When EXTERNALHOSTNAME is set, the service URLs default to the domain name specified. The host machine or another on that network can resolve that domain name. As Docker cannot resolve that domain name, the traffic does not reach the FME Flow web container. 

How to Resolve It

To fix this issue, you have a couple of options. For each option, your IP address should be static so that any changes to your IP address don’t break the deployment. Remember to restart your containers if you change your Docker Compose file.

Option 1: Use the host machine’s IP address instead of the hostname

Set the EXTERNALHOSTNAME value to the IP address of the host machine. The URLs will use the IP address that both Docker and the host machine can resolve.

Option 2: Access FME Flow using the desired domain name

If you do not want the IP address to be displayed in these URLs, you can take a few extra steps to allow you to use the domain or hostname of the host machine.

1. Set the EXTERNALHOSTNAME environment variable to the IP address of the host machine.
2. In the Docker Compose file, add an environment variable to the fmeflowcore service:

SERVICEURL=https://host:port




This will set the service URLs to the domain or hostname of the host machine. This environment variable saves doing this manually in the web ui post-install. 

Omit this step if you want to retain the ability to edit service URLs in the FME Flow web interface.

3. Configure extra_hosts for the fmeserverweb service. This maps the domain name to the IP address so the web container can resolve it.

    extra_hosts:
      - "host:ipaddress"


How to set EXTERNALHOSTNAME

If you are not sure how to set the EXTERNALHOSTNAME environment variable, you have two options:

Option 1:

Add any environment variables at the beginning of your Docker Compose commands:

EXTERNALHOSTNAME=10.213.0.204 docker compose -f docker-compose-2021.yaml up -d

Option 2:

Create a .env file in the same directory as your Docker Compose files and add any environment variables to it. Docker will automatically use these values.

The Docker documentation has information on .env files.

Was this article helpful?

We're sorry to hear that.

Please tell us why.

As of January 14th, 2026, comments on knowledge base articles have been closed. To make sure questions don’t get missed and to enable more community support, we’ve moved discussions to the FME Community. If you have a question or a comment about this article, please create a new post or create a support ticket.