65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
| # app/Dockerfile
 | |
| 
 | |
| # pull the official docker image
 | |
| FROM python:3.10-alpine as base
 | |
| 
 | |
| # set env variables
 | |
| ENV PYTHONDONTWRITEBYTECODE 1
 | |
| ENV PYTHONUNBUFFERED 1
 | |
| ENV PIP_DISABLE_PIP_VERSION_CHECK=on
 | |
| 
 | |
| # install app dependences
 | |
| COPY requirements.txt ./
 | |
| RUN pip install --no-cache-dir --root-user-action=ignore -r requirements.txt
 | |
| 
 | |
| # now multistage builds
 | |
| FROM python:3.10-alpine
 | |
| 
 | |
| # set env variables
 | |
| ENV PYTHONDONTWRITEBYTECODE 1
 | |
| ENV PYTHONUNBUFFERED 1
 | |
| 
 | |
| # default build args
 | |
| ARG VERSION=0.1.0 \
 | |
|     APP_DIR=/app \
 | |
|     DATA_DIR=/app/data \
 | |
|     SRC_DIR=./logs_collector \
 | |
|     SCRIPTS_DIR=./scripts \
 | |
|     WEB_PORT=8000 \
 | |
|     USER_NAME=collector \
 | |
|     USER_GROUP=collector \
 | |
|     APP_UID=1000 \
 | |
|     APP_GID=1000
 | |
| 
 | |
| # copy app dependences
 | |
| COPY --from=base /usr/local/lib/python3.10/site-packages/ /usr/local/lib/python3.10/site-packages/
 | |
| COPY --from=base /usr/local/bin/ /usr/local/bin/
 | |
| 
 | |
| # add curl and createa user to avoid running container as root &&
 | |
| # create storage dir
 | |
| RUN apk add --no-cache --upgrade curl && \
 | |
|     addgroup --system ${USER_GROUP} --gid ${APP_GID} && \
 | |
|     adduser --system --uid ${APP_UID} --ingroup ${USER_GROUP} ${USER_NAME} && \
 | |
|     mkdir -p ${APP_DIR}/data  && \
 | |
|     chown -R ${USER_NAME}:${USER_GROUP} ${DATA_DIR}
 | |
| 
 | |
| # switch to user
 | |
| USER ${USER_NAME}
 | |
| 
 | |
| # copy src and entrypoint.sh to app dir
 | |
| COPY --chown=${USER_NAME}:${USER_GROUP} ${SRC_DIR} ${APP_DIR}
 | |
| COPY --chown=${USER_NAME}:${USER_GROUP} ${SCRIPTS_DIR}/entrypoint.sh ${APP_DIR}
 | |
| 
 | |
| # set workdir
 | |
| WORKDIR ${APP_DIR}
 | |
| 
 | |
| # app listens on this port by default
 | |
| EXPOSE ${WEB_PORT}
 | |
| 
 | |
| # set lables about app
 | |
| LABEL maintainer="s.zhukovskii@ispsystem.com"
 | |
| LABEL me.zhukovsky.logs-collector.version=v${VERSION}
 | |
| 
 | |
| # run app
 | |
| ENTRYPOINT [ "sh", "entrypoint.sh" ]
 |