docker의 one service at one container 테스트 결과
2020.05.19 20:29
2,215
1
본문
uwsgi를 실행시키면 echo loop 스크립트가 없더라도 동작을 해야한다고 생각했다.
하지만 테스트 결과 동작하지 않음
테스트 사항은 다음과 같음
1. docker-compose.yml에서 command로 uwsgi 명령어를 직접 수행 -> 에러 발생
ERROR: for 0b00e6267665_uwsgi-app Cannot start service uwsgi-app: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"/tmp/run.sh\": stat /tmp/run.sh: no such file or directory": unknown
2. dockerfile에서 run.sh 파일 내 uwsgi 명령어만 수행 -> 에러 발생
uwsgi-app | [uWSGI] getting INI configuration from /application/uwsgi.ini
nginx-php-webserver | 2020/05/19 11:21:28 [emerg] 1#1: host not found in upstream "uwsgi-app" in /etc/nginx/sites-available/sample_python_ng.conf:46
즉 nginx는 uwsgi의 port로 구동중인 서비스를 찾을 수 없어 에러를 출력함
3. run.sh 수행
스크립트 내용 :
#!/bin/bash
uwsgi --ini /application/uwsgi.ini
while true;
do
echo "still live";
sleep 600;
done
위와 같은 명령어 수행시 동작함
다른 사람들의 dockerfile을 좀 더 분석해 봐야겠다.
[이 게시물은 최고관리자님에 의해 2020-05-23 01:46:35 일상기록에서 이동 됨]
댓글목록 1
최고관리자님의 댓글
config 파일과 소스 파일을 volumes로 연결을 하다보니 dockerfile의 종단에서 명령어로 서비스를 바로 실행하는데 어려움이 있다.
아무래도 개발 환경을 먼저 생각하다보니 버릴 수 없는 문제이다.
배포시에는 이러한 고민이 필요 없는 만큼, 지금은 loop 스크립트로 docker 컨테이너 운영이 지속되는 환경을 유지해야 한다
완벽한 이미지로 동작시키는 방법에 대해 테스트를 할 필요는 있다.
그리고 log들을 한곳에서 수집하고 관리하는 docker 서비스를 만들 필요가 있다는 생각이 들었다.
이러면 해당 컨테이너만 volumes을 걸어 작업을 하면 차후 발생될 수 있는 컨테이너 문제 발생시 데이터 손실에서 벗어날 수 있을 것이다.