Improve Dockerfile with best practices and optimizations #1231
+22
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
The existing Dockerfile in the project can be improved by incorporating best practices and optimizations, such as using a non-root user, setting appropriate environment variables, and reducing image size by disabling caching. These changes will make the Dockerfile more secure, efficient, and compliant with best practices.
Changes
Added environment variables to prevent Python from buffering the output and to disable writing
.pyc
files.Created a non-root user named
appuser
to follow the principle of least privilege and updated the ownership of files and folders accordingly.Added the
--no-cache-dir
flag to thepip install
command to prevent caching and reduce the image size.Updated the
COPY
command to set the appropriate user and group ownership for the copied files.Documentation
The changes have been explained in this pull request description. The improved Dockerfile itself includes comments that explain the purpose of each command and environment variable.
Test Plan
Build the Docker image using the updated Dockerfile with the command
docker build -t improved-dockerfile .
.Run a container using the newly built image with
docker run --rm -it improved-dockerfile
.Verify that the application runs as expected within the container, and that any relevant functionality still works as intended.
PR Quality Checklist