aurweb/Dockerfile
Kevin Morris 2a3df086d3 Docker: add [c]git, nginx, fastapi, php-fpm, ca
Now, we have a full collection of services used to run
aurweb over HTTPS using a self-signed CA.

New Docker services:

- `ca` - Certificate authority services
    - When the `ca` service is run, it will (if needed) generate
      a CA certificate and leaf certificate for localhost AUR
      access. This ca is then shared with things like nginx to
      use the leaf certificate. Users can import
      `./cache/ca.root.pem` into their browser or ca-certificates
      as a root CA who issued aurweb's certificate.
- `git` - Start sshd and set it up for aur git access
- `cgit` - Serve cgit with uwsgi on port 3000
- `fastapi` - Serve our FastAPI app with `hypercorn` on port 8000
- `php-fpm` - Serve our PHP-wise aurweb
- `nginx` - Serve FastAPI, PHP and CGit with an HTTPS certificate.
    - PHP: https://localhost:8443
    - PHP CGit: https://localhost:8443/cgit
    - FastAPI: https://localhost:8444
    - FastAPI CGit: https://localhost:8444/cgit

Short of it: Run the following in a shell to run PHP and FastAPI
servers on port **8443** and **8444**, respectively.

    $ docker-compose up nginx

This will host the PHP, FastAPI, CGit and Git ecosystems.

Git SSH can be knocked at `aur@localhost:2222` as long as you have a
valid public key in the aurweb database.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-24 19:02:35 -07:00

33 lines
1.1 KiB
Docker

FROM archlinux:base-devel
# Setup some default system stuff.
RUN bash -c 'echo "127.0.0.1 localhost" >> /etc/hosts'
RUN bash -c 'echo "::1 localhost" >> /etc/hosts'
RUN ln -sf /usr/share/zoneinfo/UTC /etc/localtime
RUN mkdir -p .pkg-cache
# Install dependencies.
RUN pacman -Syu --noconfirm --noprogressbar \
--cachedir .pkg-cache git gpgme protobuf pyalpm \
python-mysqlclient python-pygit2 python-srcinfo python-bleach \
python-markdown python-sqlalchemy python-alembic python-pytest \
python-werkzeug python-pytest-tap python-fastapi nginx python-authlib \
python-itsdangerous python-httpx python-jinja python-pytest-cov \
python-requests python-aiofiles python-python-multipart \
python-pytest-asyncio python-coverage hypercorn python-bcrypt \
python-email-validator openssh python-lxml mariadb mariadb-libs \
python-isort flake8 cgit uwsgi uwsgi-plugin-cgi php php-fpm
RUN useradd -U -d /aurweb -c 'AUR User' aur
COPY docker /docker
WORKDIR /aurweb
COPY . .
ENV PYTHONPATH=/aurweb
ENV AUR_CONFIG=conf/config
RUN make -C po all install
RUN python setup.py install