Dust break
Dust break

Reputation: 137

Can't access webserver of airflow after run the container

I pulled the latest version of airflow image from docker hub.

apache/airflow.

And I tried to run a container base on this image.

docker run -d -p 127.0.0.1:5000:5000 apache/airflow webserver

The container is running and the status of port is fine. But I still can't access the airflow webserver from my browser. docker ps

This site can’t be reached. 127.0.0.1 refused to connect.

After few minutes, the container will stop automatically.

Is there anyone could advise?

Upvotes: 2

Views: 6781

Answers (1)

Mihai
Mihai

Reputation: 10727

I don't have experience with airflow, but this is how you fix this image to run:

First of all you have to overwrite the entrypoint because the existing one doesn't help a lot. From what I understand this image needs 2 steps in order to run: initdb and webserver. For this reason the existing entrypoint is not useful.

Run:

docker run -p 5000:8080 --entrypoint /bin/bash -ti  apache/airflow

This will open a shell inside a running container. Also note that I mapped port 8080 inside the container.

Then inside the container run:

airflow db init
airflow webserver -p 8080

Note that in older versions of airflow, the command to initialize the database is airflow initdb, instead of airflow db init.

Open a browser and navigate to http://localhost:5000

When you close the container your work is gone thou ;)

Another thing you can do is put the 2 airflow commands in a bash script and map that script inside the container and use it as entrypoint. Something like this:

docker run -p 5000:8080 -v $(pwd)/startup.sh:/opt/airflow/startup.sh --entrypoint /opt/airflow/startup.sh -d --name airflow apache/airflow 

You should make startup.sh executable before running this.

Let me know if you run into issues.

Upvotes: 9

Related Questions