I'm running Airflow 2.0 using docker, when i run sudo docker-compose up --build I'm getting an error
ERROR: for apache_airflow_scheduler_1 Cannot start service scheduler: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "./scripts/airflow-entrypoint.sh": permission denied: unknown
ERROR: for webserver Cannot start service webserver: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "./scripts/airflow-entrypoint.sh": permission denied: unknown
ERROR: for scheduler Cannot start service scheduler: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "./scripts/airflow-entrypoint.sh": permission denied: unknown
ERROR: Encountered errors while bringing up the project.
my layout for docker-compose is
version: "2.1"
services:
postgres: # metadata database
image: postgres:12
environment:
- POSTGRES_USER=airflow
- POSTGRES_PASSWORD=airflow
- POSTGRES_DB=airflow
ports:
- "5434:5432" # mapping the port 5432 of postgres container with 5434 of local machine
scheduler:
build:
context: .
dockerfile: Dockerfile
restart: on-failure
command: scheduler
entrypoint: ./scripts/airflow-entrypoint.sh
depends_on:
- postgres
env_file:
- .env
ports:
- "8794:8793"
volumes:
- ./dags:/opt/airflow/dags
- ./airflow-logs:/opt/airflow/logs
- ./scripts:/opt/airflow/scripts
healthcheck:
test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
interval: 30s
timeout: 30s
retries: 3
webserver:
build:
context: .
dockerfile: Dockerfile
hostname: webserver
restart: always
depends_on:
- postgres
command: webserver
env_file:
- .env
volumes:
- ./dags:/opt/airflow/dags
- ./scripts:/opt/airflow/scripts
- ./airflow-logs:/opt/airflow/logs
ports:
- "8088:8080"
entrypoint: ./scripts/airflow-entrypoint.sh
healthcheck:
test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
interval: 30s
timeout: 30s
retries: 32
Dockerfile
FROM apache/airflow
USER root
ARG AIRFLOW_HOME=/opt/airflow
ADD dags /opt/airflow/dags
RUN pip install --upgrade pip
RUN chown -R airflow:airflow $AIRFLOW_HOME
USER airflow
RUN pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org boto3
USER ${AIRFLOW_UID}
My layout for my airflow-entrypoint.sh is
#!/usr/bin/env bash
airflow db init
airflow db upgrade
airflow users create -r Admin -u admin -e MY_EMAIL -f MY_FIRSTNAME -l MY_LASTNAME -p admin
airflow scheduler &
airflow webserver
How can i resolve this? I assume i execute chmod +x but where do I place it since the two images webserver and scheduler are custom images.