summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dockerignore6
-rw-r--r--.dockleignore2
-rw-r--r--.github/workflows/dockle.yml30
-rw-r--r--Dockerfile12
-rw-r--r--healthcheck.sh4
5 files changed, 52 insertions, 2 deletions
diff --git a/.dockerignore b/.dockerignore
index 854e643d39..8f984831ef 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -16,9 +16,15 @@ files/
misskey-assets/
fluent-emojis/
.pnp.*
+
+# .yarn関連
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
+
+.idea/
+packages/*/.vscode/
+packages/backend/test/docker-compose.yml
diff --git a/.dockleignore b/.dockleignore
new file mode 100644
index 0000000000..7b17e9c9b5
--- /dev/null
+++ b/.dockleignore
@@ -0,0 +1,2 @@
+DKL-DI-0006
+DKL-LI-0003
diff --git a/.github/workflows/dockle.yml b/.github/workflows/dockle.yml
new file mode 100644
index 0000000000..9b79ee54f0
--- /dev/null
+++ b/.github/workflows/dockle.yml
@@ -0,0 +1,30 @@
+---
+name: Dockle
+
+on:
+ push:
+ branches:
+ - master
+ - develop
+ pull_request:
+
+jobs:
+ dockle:
+ runs-on: ubuntu-latest
+ env:
+ DOCKER_CONTENT_TRUST: 1
+ steps:
+ - uses: actions/checkout@v3.2.0
+ - run: |
+ curl -L -o dockle.deb "https://github.com/goodwithtech/dockle/releases/download/v0.4.10/dockle_0.4.10_Linux-64bit.deb"
+ sudo dpkg -i dockle.deb
+ - run: |
+ cp .config/docker_example.env .config/docker.env
+ cp ./docker-compose.yml.example ./docker-compose.yml
+ - run: |
+ docker compose up -d web
+ docker tag "$(docker compose images web | awk 'OFS=":" {print $4}' | tail -n +2)" misskey-web:latest
+ - run: |
+ cmd="dockle --exit-code 1 misskey-web:latest ${image_name}"
+ echo "> ${cmd}"
+ eval "${cmd}"
diff --git a/Dockerfile b/Dockerfile
index 3876b5f6ce..9b6f2f7e30 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,7 +8,9 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache \
&& apt-get update \
&& apt-get install -yqq --no-install-recommends \
- build-essential
+ build-essential wget ca-certificates \
+ && wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq \
+ && chmod +x /usr/bin/yq
RUN corepack enable
@@ -29,6 +31,7 @@ ARG NODE_ENV=production
RUN git submodule update --init
RUN pnpm build
+RUN rm -rf .git/
FROM node:${NODE_VERSION}-slim AS runner
@@ -42,13 +45,17 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
ffmpeg tini \
+ && rm -rf /var/lib/apt/lists \
&& corepack enable \
&& groupadd -g "${GID}" misskey \
- && useradd -l -u "${UID}" -g "${GID}" -m -d /misskey misskey
+ && useradd -l -u "${UID}" -g "${GID}" -m -d /misskey misskey \
+ && find / -type f -perm /u+s -ignore_readdir_race -exec chmod u-s {} \; \
+ && find / -type f -perm /g+s -ignore_readdir_race -exec chmod g-s {} \;
USER misskey
WORKDIR /misskey
+COPY --from=builder /usr/bin/yq /usr/bin/yq
COPY --chown=misskey:misskey --from=builder /misskey/node_modules ./node_modules
COPY --chown=misskey:misskey --from=builder /misskey/built ./built
COPY --chown=misskey:misskey --from=builder /misskey/packages/backend/node_modules ./packages/backend/node_modules
@@ -58,5 +65,6 @@ COPY --chown=misskey:misskey --from=builder /misskey/fluent-emojis /misskey/flue
COPY --chown=misskey:misskey . ./
ENV NODE_ENV=production
+HEALTHCHECK --interval=5s --retries=20 CMD ["/bin/bash", "/misskey/healthcheck.sh"]
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["pnpm", "run", "migrateandstart"]
diff --git a/healthcheck.sh b/healthcheck.sh
new file mode 100644
index 0000000000..f8e598b282
--- /dev/null
+++ b/healthcheck.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+PORT=$(yq '.port' /misskey/.config/default.yml)
+curl -s -S -o /dev/null "http://localhost:${PORT}"