Commit graph

52 commits

Author SHA1 Message Date
Joakim Saario
9c6c13b78a
style: Run pre-commit 2022-08-22 22:40:45 +02:00
Kevin Morris
d63615a994
fix(docker): fix ca entrypoint logic and healthcheck
With this commit, it is advised to `rm ./data/root_ca.crt ./data/*.pem`,
as new certificates and a root CA will be generated while utilizing the
step volume.

Closes #367

Signed-off-by: Kevin Morris <kevr@0cost.org>
2022-08-13 23:43:04 -07:00
Kevin Morris
40a0e866e7
feat(archives): add {archive}.sha256 and construct archives in tmpdir
This change brings some new additions to our archives:
- SHA-256 .sha256 hexdigests
- We construct our archives in a tmpdir now and move them to the
archive destination when all are completed. This removes some
corrupted downloading when archiving is in-process.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2022-02-08 13:28:39 -08:00
Hunter Wittenborn
34c2692193
Added missing immutable config flag to Compose file 2022-01-20 15:50:22 -06:00
Kevin Morris
7bcc8d7ce7
feat: support LOG_CONFIG environment variable
This variable allows users to override the logging.conf used
for Python logging configuration. By default, this is set
to logging.conf, which is a production config. LOG_CONFIG
is treated relative to [options] aurwebdir.

This patch allows us to specify the logging config as opposed
to copying over logging.conf in our test docker and gitlab
test scripts, as well as ease-of-testing as a developer.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2022-01-18 07:27:36 -08:00
Kevin Morris
4edae5015a
change(docker): remove ca dependencies on php-fpm/fastapi
Signed-off-by: Kevin Morris <kevr@0cost.org>
2022-01-10 00:18:09 -08:00
Kevin Morris
3a43e2b98c
fix(docker): reduce health check interval to 2s
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-12-09 21:03:37 -08:00
Kevin Morris
7831503c19
fix(docker): use logging.prod.conf for sharness
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-12-07 15:09:20 -08:00
Kevin Morris
84beacd427
fix(docker): supply AUR_CONFIG_IMMUTABLE for docker-compose
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-27 22:49:52 -08:00
Kevin Morris
7b0d664bc0
fix(docker): reorg ./data mounts
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-27 21:03:24 -08:00
Kevin Morris
b98159d5b9
change(docker): use step-ca for CA + cert generation
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-27 16:43:29 -08:00
Kevin Morris
34747359ba
fix(docker): expose git service's 2222 through 0.0.0.0
Other ports we use are locked to 127.0.0.1. The `git` service,
however, already promotes security in its sshd service and
can't really be abused from an external source. This simplifies
the need to forward to localhost if deploy targets want the sshd
to be available.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-21 23:11:02 -08:00
Kevin Morris
41e0eaaece
fix(docker): force bind ports to localhost only
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-21 21:43:59 -08:00
Kevin Morris
bc7bf9866a
docker: bind ./aurweb in cron service by default
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-21 00:55:27 -08:00
Kevin Morris
d4d9f50b8f
change(docker): use ./data instead of ./cache
For the `git` service, ./data is always used to provide an
optional overriding of ssh host keys. In aur-dev production
containers, most services which use the data mount use an
internal Docker `data` volume instead.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-20 20:05:32 -08:00
Kevin Morris
a1e547c057
feat(docker): allow configurable SSH_CMDLINE in git service
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-20 19:04:38 -08:00
Kevin Morris
fa26c8078b
fix(docker): modify db configuration for new tests
A user that can create databases is now required for tests,
we use the 'root' user in Docker.

Added docker services:
---------------------
- mariadb_test - host localhost:13307

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-17 01:36:16 -08:00
Kevin Morris
9424341b55
fix(docker): fix cgit css config
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-14 23:41:42 -08:00
Kevin Morris
4f7aeafa8d
feat(docker): host gzip archive downloads
- added config option [mkpkglists] archivedir
    - created by mkpkglists

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-10 07:39:23 -08:00
Kevin Morris
4b8963b7ba
feat(docker): add cron service (aurblup + mkpkglists)
Normally, these scripts are used to update official providers
in the aurweb database along with archives that can be retrieved.

Run both of these scripts in a 5 minute cron job, to both reflect
the live instance database and production load.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-09 00:29:19 -08:00
Kevin Morris
e4a5b7fae9
fix(docker): use 3s intervals for all healthchecks
This'll speed up the docker development and deployment
processes significantly.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-03 05:40:30 -07:00
Kevin Morris
9aa8decf40
fix(fastapi): use metrics in cases where PROMETHEUS_MULTIPROC_DIR is defined
Previously, we restricted this to gunicorn to get it working on aur-dev.
This change makes it usable through any backend, and also no-op if
PROMETHEUS_MULTIPROC_DIR is not defined.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-01 14:18:19 -07:00
Kevin Morris
cdb854259a
fix(docker): share FASTAPI_BACKEND with the server
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-01 13:54:58 -07:00
Kevin Morris
1be4ac2fde
feat(docker): use PROMETHEUS_MULTIPROC_DIR
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-11-01 12:27:33 -07:00
Kevin Morris
1c0543c07e
feat(docker): fixup and utilize AURWEB_(SSHD|FASTAPI|PHP)_PREFIX
Previously CGIT_CLONE_PREFIX_(PHP|FASTAPI), we found that we could
use the same env var in multiple places, including non-cgit-clone-prefix
areas.

So, they were renamed, and one additional prefix was added.

- CGIT_CLONE_PREFIX_PHP -> AURWEB_PHP_PREFIX
    - Used for cgit's clone prefix and AUR_CONFIG's aur_location for PHP
- CGIT_CLONE_PREFIX_FASTAPI -> AURWEB_FASTAPI_PREFIX
    - Used for cgit's clone prefix and AUR_CONFIG's aur_location for FastAPI
- AURWEB_SSHD_PREFIX
    - Used for aurweb's sshd clone prefix shown on package pages

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-10-28 08:19:19 -07:00
Kevin Morris
1656f5824d
fix(docker): restore mariadb service
Additionally, for now, no-op usage of the MARIADB_SOCKET_DIR
environment variable. This is particularly useful for a serious
production setup, but we don't currently use that.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-10-28 08:19:18 -07:00
Kevin Morris
94d494866f
fix(fastapi): increase recursion limit during tests
The default recursion limit used by Docker's archlinux:base-devel
Python package becomes problematic in some cases when running tests
against our FastAPI application using starlette.testclient.TestClient
(aliased to fastapi.testclient.TestClient). starlette ends up with
test failures because it exceeds the recursion limit, but this only
happens when using the `TestClient`. When the ASGI servers are run,
this is not an issue and so in that case, the recursion limit has
not been touched.

This change uses a `TEST_RECURSION_LIMIT` environment variable to
modify the recursion limit of the FastAPI application. This variable
is, by default, only supplied when running pytests in Docker, but
can be force-supplied by the user.

TEST_RECURSION_LIMIT=10000 has been added to `.env` and `.gitlab-ci.yml`.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-10-23 20:15:53 -07:00
Kevin Morris
0b1c3ea539
feat(docker): expose cgit-{php,fastapi} on {13000,13001}
This change exposes the uwsgi daemon we use for cgit on:

- PHP: docker-host:13000
- FastAPI: docker-host:13001

These ports can then be used to take advantage of cgit on
a production server that hosts nginx in front of Docker.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-10-21 11:11:01 -07:00
Kevin Morris
db730ad8cb
fix(docker): fix cgit clone-prefix
Additionally, clone-prefix is now configurable via environment variables:

- CGIT_CLONE_PREFIX_PHP
- CGIT_CLONE_PREFIX_FASTAPI

These vars can be used by production to customize the clone prefix.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-10-21 11:11:01 -07:00
Steven Guikal
1cb1ce0d99 feat(docker): allow production docker setup to use dedicated mariadb
Signed-off-by: Steven Guikal <void@fluix.one>
2021-10-19 17:21:03 -04:00
Steven Guikal
4e3cc1dfe2 feat(docker): only use mariadb socket for connections 2021-10-19 15:35:34 -04:00
Kevin Morris
d22580fa74
fix(docker): add aurweb-image service
The new `aurweb-image` service does not perform any purpose
other than providing a build definition for 'aurweb:latest'.
With this, `docker-compose build` now just runs once for the
`aurweb-image` service, which builds the image used by all
other services.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-10-19 07:40:59 -07:00
Kevin Morris
927f5e8567
feat(docker): add gunicorn support & production default
Supply FASTAPI_BACKEND=gunicorn and FASTAPI_WORKERS=<threads_num> to
docker-compose up to use the gunicorn backend.

This is defaulted in production to gunicorn, but FASTAPI_WORKERS
should definitely be configured by any production deployment.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-10-16 22:53:46 -07:00
Kristian Klausen
ef0c2d5a28 magic 2021-10-02 23:54:10 +02:00
Kevin Morris
ad9997c48f
feat(Docker): build aurweb:latest via docker-compose build
Users can now build the required image by running (in the aurweb root):

    $ docker-compose build

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-10-02 12:59:49 -07:00
Kevin Morris
0fd31b8d36
refactor(docker): New mariadb_init service
Provides a single source of truth for mariadb database
initialization. Previously, php-fpm and fastapi were
racing against each other; while this wasn't an issue,
it was very messy.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-09-08 17:14:55 -07:00
Kevin Morris
e93b0a9b45
Docker: expose fastapi (18000) and php-fpm (19000)
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-09-05 00:08:47 -07:00
Kevin Morris
96d1af9363
docker-compose: add redis service
Now, the fastapi docker-compose service uses the new redis
service for a cache option.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-08-17 19:58:26 -07:00
Kevin Morris
35851d5533
Docker: add service 'memcached'
Additionally, setup memcached for php-fpm.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-08-16 22:09:09 -07:00
Kevin Morris
ae0f69a5e4
Docker: remove intervals and timeouts
These weren't needed at all and provided false negatives in
general. Removed them to let Docker deal with them.

Additionally. 'exit 0' -> 'echo' for ca's command; 'exit 0'
happens to depend on the shell running Docker (it seems).
echo is quite a bit more agnostic.

Moreso, added mariadb deps to php-fpm and fastapi.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-08-16 20:07:25 -07:00
Kevin Morris
427a30ef8a Docker: Remove deprecated links
In addition, remove some unneeded dependencies on tests.
Though, in the future we _should_ craft tests that use these.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-29 21:53:23 -07:00
Kevin Morris
3f60f5048e Docker: add scripts/setup-sqlite.sh
This script purely removes any existing sqlite and is
used before tests are run. This causes the test flow
to run `aurweb.initdb` again (if ever).

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-29 21:53:23 -07:00
Kevin Morris
6c7bb04b93 Docker: Improve mariadb init
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-29 21:49:57 -07:00
Kevin Morris
0a3aa40f20 Docker: Fix git sshd
This was completely bugged out. This commit fixes git, provides
two separate cgit servers for the different URL bases and also
supplies a smartgit service for $AURWEB_URL/repo.git interaction.

Docker image needs to be rebuilt with this change:

    $ docker build -t aurweb:latest .

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-27 05:16:12 -07:00
Kevin Morris
9ee7be4a1c Docker: remove web/locale from volume mounts
This caused a bug where generated locale would not be used.

Also, removed appending to /etc/hosts which was bugging out
on Mac OS X. archlinux:base-devel seems to come with a valid
/etc/hosts.

Additionally, remove AUR_CONFIG from Dockerfile. We don't
set it up; just use the defaults during installation.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-26 00:38:54 -07:00
Kevin Morris
61c473405f Docker: add ./templates volume mount
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-24 21:42:19 -07:00
Kevin Morris
df161ef38e Docker: add .env configurable FASTAPI_BACKEND
By default we now use uvicorn because it has a much
better developer feedback out of the box. We'll work
on hypercorn logging, but for now, hypercorn is usable
via: `docker-compose --env-file docker/hypercorn.env up nginx`.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-24 21:31:49 -07:00
Kevin Morris
495dd2d821 Docker: add missing git link to pytest-sqlite
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-24 20:35:29 -07:00
Kevin Morris
565b928a59 Docker: mount codebase volumes
Before, docker build was the only way to transfer new code
over to the docker image. This allows users to execute code
in their working directory.

Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-24 20:33:02 -07:00
Kevin Morris
e624e25c0f Docker: Add colored output to tests
Signed-off-by: Kevin Morris <kevr@0cost.org>
2021-06-24 19:02:35 -07:00