mirror of
				https://github.com/avatao-content/baseimage-tutorial-framework
				synced 2025-10-31 01:32:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
| FROM node:8 as ngbuild
 | |
| 
 | |
| WORKDIR /data/
 | |
| 
 | |
| COPY src/frontend /data/
 | |
| RUN yarn install --frozen-lockfile
 | |
| RUN yarn build --no-progress
 | |
| 
 | |
| FROM avatao/ubuntu:16.04
 | |
| 
 | |
| ENV TFW_WEB_PORT=4242
 | |
| ENV TFW_LOGIN_APP_PORT=6666
 | |
| ENV TFW_PUBLIC_PORT=8888
 | |
| ENV TFW_SUPERVISOR_HTTP_PORT=9001
 | |
| 
 | |
| EXPOSE ${TFW_PUBLIC_PORT}
 | |
| 
 | |
| ENV TFW_EVENT_HANDLERS_DIR="/opt/event_handlers"
 | |
| ENV TFW_APP_DIR="/srv/app"
 | |
| ENV TFW_FRONTEND_DIR="/srv/frontend"
 | |
| ENV TFW_LOGIN_APP_DIR="/tmp/source_code_server"
 | |
| ENV TFW_LIB_DIR="/usr/local/lib/"
 | |
| 
 | |
| ENV TFW_SUPERVISORD_CONF="/etc/supervisor/supervisord.conf"
 | |
| 
 | |
| RUN apt-get update && \
 | |
|     apt-get install -qy \
 | |
|         supervisor \
 | |
|         libzmq5 \
 | |
|         nginx \
 | |
|         # Provides envsubst
 | |
|         gettext-base \
 | |
|         # These dependencies are required to compile the bz2, readline, sqlite3
 | |
|         # Python packages
 | |
|         libbz2-dev \
 | |
|         libreadline-dev \
 | |
|         libsqlite3-dev
 | |
| 
 | |
| COPY src/nginx /etc/nginx
 | |
| 
 | |
| RUN chown -R ${AVATAO_USER}: /var/log/nginx /var/lib/nginx && \
 | |
|     # nginx runs as a regular user, and can't write to /run
 | |
|     sed -i 's#pid /run/nginx.pid;#pid /tmp/nginx.pid;#g' /etc/nginx/nginx.conf && \
 | |
|     envsubst "$(printenv | cut -d= -f1 | grep TFW_ | sed -e 's/^/$/g')" \
 | |
|         < /etc/nginx/sites-available/default > /etc/nginx/sites-available/default
 | |
| 
 | |
| USER ${AVATAO_USER}
 | |
| 
 | |
| WORKDIR /home/${AVATAO_USER}
 | |
| COPY .pyenvrc .
 | |
| ARG PYTHON_VERSION="3.6.4"
 | |
| # no GitHub releases are available, so current tip of head is hardcoded to avoid surprises
 | |
| ARG PYENV_INSTALLER_URL="https://raw.githubusercontent.com/pyenv/pyenv-installer/78cfd4d/bin/pyenv-installer"
 | |
| ARG PYENV_INSTALLER_HASH=9509348b828f0564358fff456f7f693dd9ace351dc3f240854d7685ad8a8e1dd
 | |
| RUN curl -fSL -o pyenv-installer ${PYENV_INSTALLER_URL} && \
 | |
|     echo "${PYENV_INSTALLER_HASH} *pyenv-installer" | sha256sum -c - && \
 | |
|     bash pyenv-installer && \
 | |
|     rm pyenv-installer && \
 | |
|     echo "source $HOME/.pyenvrc" >> .bashrc && \
 | |
|     . $HOME/.pyenvrc && \
 | |
|     pyenv install ${PYTHON_VERSION} && \
 | |
|     pyenv global ${PYTHON_VERSION} && \
 | |
|     pip install tornado pyzmq transitions
 | |
| 
 | |
| ENV PYTHONPATH=${TFW_LIB_DIR}
 | |
| COPY lib $TFW_LIB_DIR
 | |
| COPY supervisord.conf ${TFW_SUPERVISORD_CONF}
 | |
| COPY src/app ${TFW_APP_DIR}
 | |
| COPY src/event_handlers ${TFW_EVENT_HANDLERS_DIR}
 | |
| COPY --from=ngbuild /data/dist ${TFW_FRONTEND_DIR}
 | |
| 
 | |
| CMD . "$HOME/.pyenvrc" && exec supervisord --nodaemon
 |