kopia lustrzana https://github.com/wagtail/wagtail
Improve Dockerfile in the new project template (#5800)
* Improve Dockerfile in project template This reorganises Dockerfile to make it adhere to more common-sense rules, while not being too opinionated on the deployment process. * Add dockerignore file * Make Dockerfile comments nicer * Delete dockerignore created in a wrong path * Add the right dockerignore files * Use slim buster Docker image * Add sqlite3 files to dockerignore * Fix Docker image namepull/5978/head
rodzic
61e48078ab
commit
f5b29b3a5e
|
@ -0,0 +1,39 @@
|
|||
# Django project
|
||||
/media/
|
||||
/static/
|
||||
*.sqlite3
|
||||
|
||||
# Python and others
|
||||
__pycache__
|
||||
*.pyc
|
||||
.DS_Store
|
||||
*.swp
|
||||
/venv/
|
||||
/tmp/
|
||||
/.vagrant/
|
||||
/Vagrantfile.local
|
||||
node_modules/
|
||||
/npm-debug.log
|
||||
/.idea/
|
||||
.vscode
|
||||
coverage
|
||||
.python-version
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
env/
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
|
@ -1,27 +1,60 @@
|
|||
# Use an official Python runtime as a parent image
|
||||
FROM python:3.7
|
||||
LABEL maintainer="hello@wagtail.io"
|
||||
|
||||
# Set environment varibles
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
ENV DJANGO_ENV dev
|
||||
|
||||
COPY ./requirements.txt /code/requirements.txt
|
||||
RUN pip install --upgrade pip
|
||||
# Install any needed packages specified in requirements.txt
|
||||
RUN pip install -r /code/requirements.txt
|
||||
RUN pip install gunicorn
|
||||
|
||||
# Copy the current directory contents into the container at /code/
|
||||
COPY . /code/
|
||||
# Set the working directory to /code/
|
||||
WORKDIR /code/
|
||||
|
||||
RUN python manage.py migrate
|
||||
# Use an official Python runtime based on Debian 10 "buster" as a parent image.
|
||||
FROM python:3.8.1-slim-buster
|
||||
|
||||
# Add user that will be used in the container.
|
||||
RUN useradd wagtail
|
||||
RUN chown -R wagtail /code
|
||||
|
||||
# Port used by this container to serve HTTP.
|
||||
EXPOSE 8000
|
||||
|
||||
# Set environment variables.
|
||||
# 1. Force Python stdout and stderr streams to be unbuffered.
|
||||
# 2. Set PORT variable that is used by Gunicorn. This should match "EXPOSE"
|
||||
# command.
|
||||
ENV PYTHONUNBUFFERED=1 \
|
||||
PORT=8000
|
||||
|
||||
# Install system packages required by Wagtail and Django.
|
||||
RUN apt-get update --yes --quiet && apt-get install --yes --quiet --no-install-recommends \
|
||||
build-essential \
|
||||
libpq-dev \
|
||||
libmariadbclient-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
zlib1g-dev \
|
||||
libwebp-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install the application server.
|
||||
RUN pip install "gunicorn==20.0.4"
|
||||
|
||||
# Install the project requirements.
|
||||
COPY requirements.txt /
|
||||
RUN pip install -r /requirements.txt
|
||||
|
||||
# Use /app folder as a directory where the source code is stored.
|
||||
WORKDIR /app
|
||||
|
||||
# Set this directory to be owned by the "wagtail" user. This Wagtail project
|
||||
# uses SQLite, the folder needs to be owned by the user that
|
||||
# will be writing to the database file.
|
||||
RUN chown wagtail:wagtail /app
|
||||
|
||||
# Copy the source code of the project into the container.
|
||||
COPY --chown=wagtail:wagtail . .
|
||||
|
||||
# Use user "wagtail" to run the build commands below and the server itself.
|
||||
USER wagtail
|
||||
|
||||
EXPOSE 8000
|
||||
CMD exec gunicorn {{ project_name }}.wsgi:application --bind 0.0.0.0:8000 --workers 3
|
||||
# Collect static files.
|
||||
RUN python manage.py collectstatic --noinput --clear
|
||||
|
||||
# Runtime command that executes when "docker run" is called, it does the
|
||||
# following:
|
||||
# 1. Migrate the database.
|
||||
# 2. Start the application server.
|
||||
# WARNING:
|
||||
# Migrating database at the same time as starting the server IS NOT THE BEST
|
||||
# PRACTICE. The database should be migrated manually or using the release
|
||||
# phase facilities of your hosting platform. This is used only so the
|
||||
# Wagtail instance can be started with a simple "docker run" command.
|
||||
CMD set -xe; python manage.py migrate --noinput; gunicorn {{ project_name }}.wsgi:application
|
||||
|
|
Ładowanie…
Reference in New Issue