본문 바로가기

의지박약16

[Shell Script] 쉘 스크립트에서 config.ini 파일 읽고 쓰기 (feat. konfig) 서비스를 하려고 보면 각 환경, 프로젝트마다 설정을 위한 값이 유동적이기 때문에 config파일을 읽어오는 것은 중요하다. python 프로젝트 내부에서는 config.py를 따로 두고 konfig 라는 라이브러리를 따로 설치해서 ini파일을 읽어주기도 한다. 이번 포스팅의 목적은 한개의 config.ini 파일로 python 프로젝트에서도 활용하고 shell script에서도 활용하기 위함이다. # 밑에서 계속 사용하게 될 config.ini 파일 내용 # config.ini [server] HOST= 0.0.0.0 PORT= 8889 [db] USER= kbj PW= 1234 ADD= 192.168.0.1 PORT= 2345 NAME= kbjdb [file] STORAGE= /xedm_storage/.. 2021. 9. 8.
[Docker] Docker run 상태 유지하기 Dockerfile Script를 작성하면서 container를 띄울때 아무리 -d 옵션을 주고 --restart always 옵션을 주어도 무한 restart에 걸리기만 하고 container가 정상적으로 유지되지 않았다. 이유를 찾아보니, Docker는 앱의 실행과 배포에 초점이 맞춰져 있기 때문에 내부에서 실행중인 프로세스가 없는경우 자동으로 종료해 버린다. 그렇기 때문에 Container 내부에는 항상 어떤 프로세스가 돌고 있어야 한다..! 잘 생각해 보면, 일반적으로 Docker Image를 다운받고 실행해보면 항상 container 내부의 bash로 접속하는 경우가 많았는데, 이게바로 Dockerfile에 CMD로 "bash" 프로세스를 항상 실행시켜 유지하므로써, container가 종료되지.. 2021. 9. 1.
[docker] Dockerfile 빌드시 timezone 설정 때문에 설치되지 않는 오류 (tesseract) Linux 환경에서 apt-get install을 하다보면 가끔 Geographic area를 설정하라는 창이 뜰 때가 있다. 일반적인 설치 환경이라면 그냥 6.Asia -> 69.Seoul 을 직접 입력해주면 되지만 Dockerfile에서 스크립트로 build 할 때는, 이런 키 입력이 불가능하다. Dockerfile 빌드를 중단할 수 밖에없는 이 상황.. 찾아보니 해결방법은 두가지가 있다. 첫번째 방법은 Dockerfile에 아래와 같이 추가해서 명시적으로 timezone을 미리 설정해놓고 설치를 진행하는것이다. 나는 이 방법으로 해결하였다. # Dockerfile FROM ubuntu:20.04 ENV TZ=Asia/Seoul RUN ln -snf /usr/share/zoneinfo/$TZ /etc.. 2021. 8. 23.
[docker] unable to prepare context: unable to evaluate symlinks in Dockerfile path Error 정말 너무 간단하고도 어이없었던 에러이다. 이거때문에 시간을 뺏긴 내가 너무 바보같아서 포스팅한다.. 나는 Docker를 빌드할때 스크립트파일 이름은 당연히 내 마음대로 해도 되는 줄 알았다. docker build -t filename . 이런식으로 filename 부분에 스크립트 파일을 넣는 건 줄 알고 혼자 삽질했지만 스크립트파일은 Dockerfile 이라는 정확한 이름을 가지고 있어야한다.. 심지어 대소문자도 정확하게..!! 그래서 다들 해당 폴더로 이동하는 것을 강조했나보다. 해당 폴더에 있는 Dockerfile 이라는 이름의 스크립트를 알아서 실행하는거고 filename부분은 image이름이 들어가는 것 이었다..ㅎㅎ 앞으로 문서를 더 꼼꼼하게 읽어야 겠다.. ps. 이 작업을 하다보면 이미지.. 2021. 8. 23.