Compare commits

...

2 commits

Author SHA1 Message Date
e32310da73 feat/docker support 2023-03-29 18:12:43 +08:00
579e837a49 chores/update some TODO 2023-03-29 11:14:13 +08:00
3 changed files with 41 additions and 4 deletions

35
Dockerfile Normal file
View file

@ -0,0 +1,35 @@
FROM python:3.11-slim as python-base
ENV PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
POETRY_HOME="/opt/poetry" \
POETRY_VIRTUALENVS_IN_PROJECT=true \
POETRY_NO_INTERACTION=1 \
PYSETUP_PATH="/opt/venv" \
VENV_PATH="/opt/venv/.venv"
ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH"
FROM python-base as builder-base
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl build-essential gcc libffi-dev libssl-dev \
libxml2-dev libxslt1-dev zlib1g-dev libxslt-dev \
gcc libjpeg-dev zlib1g-dev libwebp-dev
RUN curl -sSL https://install.python-poetry.org | python3 -
WORKDIR $PYSETUP_PATH
COPY poetry.lock pyproject.toml ./
RUN poetry install
FROM python-base as production
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libjpeg-dev libxslt1-dev libxml2-dev libxslt-dev
COPY --from=builder-base /opt /opt
COPY . /app/
RUN groupadd --gid 1000 foxhole \
&& useradd --uid 1000 --gid foxhole --shell /bin/bash foxhole
RUN chown -R 1000:1000 /app
USER foxhole
WORKDIR /app
EXPOSE 7000
CMD ["./misc/start.sh"]

View file

@ -59,11 +59,11 @@ ME = {
"sharedInbox": config.BASE_URL "sharedInbox": config.BASE_URL
+ "/inbox", + "/inbox",
}, },
"url": config.ID + "/", # XXX: the path is important for Mastodon compat "url": config.ID + "/", # the path is important for Mastodon compat
"manuallyApprovesFollowers": config.CONFIG.manually_approves_followers, "manuallyApprovesFollowers": config.CONFIG.manually_approves_followers,
"attachment": [], # TODO "attachment": [], # TODO media support
"icon": { "icon": {
"mediaType": "image/png", # TODO "mediaType": "image/png", # TODO media support
"type": "Image", "type": "Image",
"url": config.CONFIG.icon_url, "url": config.CONFIG.icon_url,
}, },
@ -72,7 +72,7 @@ ME = {
"owner": config.ID, "owner": config.ID,
"publicKeyPem": get_pubkey_as_pem(config.KEY_PATH), "publicKeyPem": get_pubkey_as_pem(config.KEY_PATH),
}, },
"tag": [] # TODO "tag": [] # TODO tag support
} }
class VisibilityEnum(str, enum.Enum): class VisibilityEnum(str, enum.Enum):

2
misc/start.sh Executable file
View file

@ -0,0 +1,2 @@
#!/bin/sh
uvicorn app.main:app --port 7000