Docker 4

docker로 postgres 구축하기 w. official image

FROM postgres:16 LABEL authors="humanlearning" ENV POSTGRES_PASSWORD="1234" \ # 필수 환경변수라 run할때마다 붙혀주기 귀찮아 Dockerfile에 일단 포함시켜놓았다 POSTGRES_USER="postgres" \ POSTGRES_DB="postgres" WORKDIR /usr/src/app #COPY create_dw_table.sql create_dw_table.sql RUN apt-get update -y && \ apt-get install vim sudo procps -y USER postgres RUN pg_createcluster 16 main &&\ /etc/init.d/postgresql start &&\ psql -U po..

docker 2024.03.14

airflow에서 크롤링(selenium) 할 경우 무한대기

기존에 github action으로 crawler를 스케쥴링해놨었는데, github action의 cron은 표기보다 30분~한시간 랜덤으로 늦게 실행되어서(무료 서버다 보니) airflow로 옮기게 되었다. 그런데 airflow로 크롤링 시 자꾸 특정 코드 다음으로 안넘어가는 문제가 발생했다. 초기엔 webdriverManger.install()에서 해당 문제 발생 이에 webdriverManager가 아니라 직접 수동으로 webdriver를 다운 받아 사용했다. 하지만 다음번엔 driver.quit() 에서 문제 발생 크롤링에 로그인을 하고 다른 페이지로 리다이렉션하는 로직이 있어서 그런가 하여 headless 모드를 끄고 단순히 driver.get()이후 driver.quit() 하고 로그를 남기는..

분산처리 2023.10.17

ec2에서 k8s 클러스터 구축하기

이번 글은 kafka의 resilient를 위해 k8s 클러스터를 구축한 경험을 정리한 글입니다. 가장 먼저 memory swap을 꺼줍니다. swapoff -a 이유는 k8s는 컨테이너들의 리소스 사용량을 관리하는데 메모리가 부족할때 억지로 디스크를 끌어다 쓰는 memory swap특성상 k8s입장에선 예외이기 때문입니다. 찾아보면 아래 명령어를 사용해 swap부분을 주석처리(#) 해주라하는데, 저는 들어가보니 swap관련된 줄이 없더군요. sudo vi /etc/fstab 다음은 설치 가능한 패키지 리스트를 한번 새로고침 해줍니다. sudo apt update & sudo apt-get update 이후 필요한 패키지들을 다운 받아줍니다. sudo apt-get install \ apt-transpo..

kubernetes 2023.04.14

docker로 한 호스트에서 kafka multi broker 를 띄울 시org.apache.kafka.common.kafkaexception: failed to acquire lock on file .lock in /var/lib/kafka/data. a kafka instance in another process or thread is using this directory.

로컬에서(mac) docker compose를 사용해 zookeeper와 kafka multi broker를 띄우던 중 제목과 같은 에러가 발생했다. 이는 docker yml에서 volumes설정 때문이었는데, 제목에도 나와 있듯 이미 다른 kafka 프로세스가 점유하고 있어서이다. volumes: - /Users/humanlearning/Downloads/docker/kafka:/var/lib/kafka/data 필자는 모든 서비스의 volumes 위와 같이 설정했다. 그렇다면 혹자는 당연히 다 같은 폴더로 지정하면 에러가 뜨는거 아니냐 하겠지만, 맞다. 사실 그냥 volumes를 안바꾸고 할 수 있는 방법은 없을까 객기를 부려봤다. 뭐 .lock 파일을 지우면 된다고 하는데 command : rm /..

docker 2023.03.17