You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							48 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							48 lines
						
					
					
						
							1.5 KiB
						
					
					
				| # This is a Dockerfile for running unit tests
 | |
| 
 | |
| ARG POETRY_HOME=/opt/poetry
 | |
| 
 | |
| # Use the Python base image
 | |
| FROM python:3.11.2-bullseye AS builder
 | |
| 
 | |
| # Define the version of Poetry to install (default is 1.4.2)
 | |
| ARG POETRY_VERSION=1.4.2
 | |
| 
 | |
| # Define the directory to install Poetry to (default is /opt/poetry)
 | |
| ARG POETRY_HOME
 | |
| 
 | |
| # Create a Python virtual environment for Poetry and install it
 | |
| RUN python3 -m venv ${POETRY_HOME} && \
 | |
|     $POETRY_HOME/bin/pip install --upgrade pip && \
 | |
|     $POETRY_HOME/bin/pip install poetry==${POETRY_VERSION}
 | |
| 
 | |
| # Test if Poetry is installed in the expected path
 | |
| RUN echo "Poetry version:" && $POETRY_HOME/bin/poetry --version
 | |
| 
 | |
| # Set the working directory for the app
 | |
| WORKDIR /app
 | |
| 
 | |
| # Use a multi-stage build to install dependencies
 | |
| FROM builder AS dependencies
 | |
| 
 | |
| ARG POETRY_HOME
 | |
| 
 | |
| # Copy only the dependency files for installation
 | |
| COPY pyproject.toml poetry.lock poetry.toml ./
 | |
| 
 | |
| # Install the Poetry dependencies (this layer will be cached as long as the dependencies don't change)
 | |
| RUN $POETRY_HOME/bin/poetry install --no-interaction --no-ansi --with test
 | |
| 
 | |
| # Use a multi-stage build to run tests
 | |
| FROM dependencies AS tests
 | |
| 
 | |
| # Copy the rest of the app source code (this layer will be invalidated and rebuilt whenever the source code changes)
 | |
| COPY . .
 | |
| 
 | |
| RUN /opt/poetry/bin/poetry install --no-interaction --no-ansi --with test
 | |
| 
 | |
| # Set the entrypoint to run tests using Poetry
 | |
| ENTRYPOINT ["/opt/poetry/bin/poetry", "run", "pytest"]
 | |
| 
 | |
| # Set the default command to run all unit tests
 | |
| CMD ["tests/"] |