: 전체적으로 Airflow 동작시에 필요한 기능들이 있는 경우에 매번 설치과정없이 작동하고 싶었기 때문에 사용하게 되었다.
# Dockerfile
FROM apache/airflow:latest
USER root
# Dockerfile
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
vim \
&& apt-get autoremove -yqq --purge \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Dockerfile
USER airflow
COPY requirements.txt /requirements.txt
RUN pip install --user --upgrade pip
RUN pip install -r /requirements.txt
docker build --no-cache -t image_name:tag
docker push image_name:tag
: poriz/airflow_custom이라는 이름으로 docker hub에 이미지를 푸시
: Docker image를 쉽게 동작하고 푸시하는 Docker image 워크플로를 기반으로 진행하였다.
: 로그인 단계를 생성하는 과정이다. steps: 아래에서 진행하며 코드는 다음과 같다.
steps:
- uses: actions/checkout@v3
- name: docker login
env:
DOCKER_USER: ${{secrets.DOCKER_USER}}
DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}}
run: |
docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
: repo에 Dockerfile을 올려주어 dockerfile을 기반으로 새 이미지를 구축한다. -> 이미지 변경점이 있다면 Dockerfile을 수정하기.
- name: Build the Docker image
run: docker build --tag ${{secrets.DOCKER_USER}}/airflow_custom:latest .
- name: docker push
run: docker push ${{secrets.DOCKER_USER}}/airflow_custom:latest
: Docker push를 위해서 계정 정보를 입력해야했으나, repo에 바로 올릴 수 없기에 Repository secrets를 사용하였다.
: secret name과 value값을 작성해주면 다음과 같이 생성된다.
: repo의 main branch에 변경점이 push, pull_request되면 생성된 Action이 수행되게된다.
: 이제 local에서 docker hub에 생성된 image를 받아 사용하며, docker-compose를 사용해야하기에 git clone, pull등을 통해 설정파일들을 받아와 사용한다.
: local에서 AIRFLOW_UID 이슈가 존재하였다. local에서 환경변수의 형태로 이를 관리하는 방법을 권장하기에 Dockerfile이나 git에서 .env를 옮길 수는 없었고, UID를 등록하는 sh파일을 작성해 실행을 권장했다.
: Docker에 대한 이해도가 좀 더 필요할 것 같다.