All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			Adds: - a Docker image, which can be used in both development and production - a `docker-compose.yml` file for local development (could probably be adapted for production deployments) Testing: - `git checkout docker` - `docker-compose up` - pray 🙏 - go to http://localhost:5000 ## App architecture I added the ability to load secret config variables (`HUB_TOKEN`, `STRIPE_SECRET_KEY` etc) from files, to support [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/) natively. The code should probably log an error if a specified `HUB_TOKEN_FILE` doesn't exist instead of failing silently.. ## Docker architecture This uses a multi-stage build to reduce the size of the final image -- having pipenv install to a predefined virtualenv, and then copying that over. The compose file doesn't include a definition for a cron runner service, and I haven't tested running one yet. Here be dragons! You can rebuild the image locally using `docker-compose build`, but this isn't required for changes to the app code, only if you edit the `Dockerfile`, or want to publish your image for use on a swarm server (in which case you will need to edit the image name to put in your own Docker hub credentials). Currently, the image is rebuilt (should set up auto-tagging..) and published with every push to this 3wordchant/capsul-flask fork. Reviewed-on: #2 Co-authored-by: 3wordchant <3wordchant@noreply.git.autonomic.zone> Co-committed-by: 3wordchant <3wordchant@noreply.git.autonomic.zone>
		
			
				
	
	
		
			49 lines
		
	
	
		
			991 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			991 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
| FROM python:3.8-alpine as build
 | |
| 
 | |
| RUN apk add --no-cache \
 | |
|     build-base \
 | |
|     gcc \
 | |
|     gettext \
 | |
|     git \
 | |
|     jpeg-dev \
 | |
|     libffi-dev \
 | |
|     libjpeg \
 | |
|     musl-dev \
 | |
|     postgresql-dev \
 | |
|     python3-dev \
 | |
|     zlib-dev
 | |
| 
 | |
| RUN mkdir -p /app/{code,venv}
 | |
| WORKDIR /app/code
 | |
| COPY Pipfile Pipfile.lock /app/code/
 | |
| 
 | |
| RUN python3 -m venv /app/venv
 | |
| RUN pip install pipenv setuptools
 | |
| ENV PATH="/app/venv/bin:$PATH" VIRTUAL_ENV="/app/venv"
 | |
| RUN pip install wheel cppy
 | |
| # Install dependencies into the virtual environment with Pipenv
 | |
| RUN pipenv install --deploy --verbose
 | |
| 
 | |
| FROM python:3.8-alpine
 | |
| 
 | |
| RUN apk add --no-cache \
 | |
|     cloud-utils \
 | |
|     libjpeg \
 | |
|     libpq \
 | |
|     libstdc++ \
 | |
|     libvirt-client \
 | |
|     openssh-client \
 | |
|     virt-install
 | |
| 
 | |
| COPY . /app/code/
 | |
| WORKDIR /app/code
 | |
| 
 | |
| COPY --from=build /app/venv /app/venv
 | |
| ENV PATH="/app/venv/bin:$PATH" VIRTUAL_ENV="/app/venv"
 | |
| 
 | |
| CMD ["gunicorn", "--bind", "0.0.0.0:5000", "-k", "gevent", "--worker-connections", "1000", "app:app"]
 | |
| 
 | |
| VOLUME /app/code
 | |
| 
 | |
| EXPOSE 5000
 |