-
去除服务器版思源笔记默认用户镜像
2022-01-16 18:21自行编译方法
- 拉取官方镜像
docker pull b3log/siyuan
- 运行
docker run -itd --name=siyuan b3log/siyuan:latest
- 拷贝文件
docker cp siyuan:/opt/siyuan /home/siyuan
- 打包新镜像
FROM alpine:latest MAINTAINER 1649991905@qq.com # 定义环境变量 #ENV USER_UID=1000 #ENV USER_GID=1000 ENV TZ=Asia/Shanghai ENV LANG=zh_CN.UTF-8 ENV LC_ALL=zh_CN.UTF-8 ENV LANGUAGE=zh_CN.UTF-8 # 拷贝编译文件 COPY siyuan /opt/siyuan/ WORKDIR /opt/siyuan/ # 设置时区为上海 RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories && \ apk add -U --no-cache ca-certificates tzdata && \ cp /usr/share/zoneinfo/${TZ} /etc/localtime && \ echo ${TZ} > /etc/timezone && \ apk del tzdata # 添加用户 #RUN addgroup --gid ${USER_GID} siyuan && \ # adduser --uid ${USER_UID} --ingroup siyuan --disabled-password siyuan && \ # chown -R siyuan:siyuan /opt/siyuan/ #USER siyuan EXPOSE 6806 ENTRYPOINT ["/opt/siyuan/kernel"]
-
求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案
2022-01-14 22:47那能说下 Dockerfile 里的 Linux 系统时基于哪个 image 镜像么?
比如FROME centos:latest
-
求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案
2022-01-11 13:48三、参考 Gitea Dockerfile
环境变量
您可以通过环境变量配置 Gitea 的一些设置:
################################### #Build stage FROM golang:1.17-alpine3.13 AS build-env ARG GOPROXY ENV GOPROXY ${GOPROXY:-direct} ARG GITEA_VERSION ARG TAGS="sqlite sqlite_unlock_notify" ENV TAGS "bindata timetzdata $TAGS" ARG CGO_EXTRA_CFLAGS #Build deps RUN apk --no-cache add build-base git nodejs npm #Setup repo COPY . ${GOPATH}/src/code.gitea.io/gitea WORKDIR ${GOPATH}/src/code.gitea.io/gitea #Checkout version if set RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \ && make clean-all build # Begin env-to-ini build RUN go build contrib/environment-to-ini/environment-to-ini.go FROM alpine:3.13 LABEL maintainer="maintainers@gitea.io" EXPOSE 22 3000 RUN apk --no-cache add \ bash \ ca-certificates \ curl \ gettext \ git \ linux-pam \ openssh \ s6 \ sqlite \ su-exec \ gnupg RUN addgroup \ -S -g 1000 \ git && \ adduser \ -S -H -D \ -h /data/git \ -s /bin/bash \ -u 1000 \ -G git \ git && \ echo "git:*" | chpasswd -e ENV USER git ENV GITEA_CUSTOM /data/gitea VOLUME ["/data"] ENTRYPOINT ["/usr/bin/entrypoint"] CMD ["/bin/s6-svscan", "/etc/s6"] COPY docker/root / COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea COPY --from=build-env /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini RUN ln -s /app/gitea/gitea /usr/local/bin/gitea
entrypoint:
#!/bin/sh if [ "${USER}" != "git" ]; then # rename user sed -i -e "s/^git\:/${USER}\:/g" /etc/passwd fi if [ -z "${USER_GID}" ]; then USER_GID="`id -g ${USER}`" fi if [ -z "${USER_UID}" ]; then USER_UID="`id -u ${USER}`" fi ## Change GID for USER? if [ -n "${USER_GID}" ] && [ "${USER_GID}" != "`id -g ${USER}`" ]; then sed -i -e "s/^${USER}:\([^:]*\):[0-9]*/${USER}:\1:${USER_GID}/" /etc/group sed -i -e "s/^${USER}:\([^:]*\):\([0-9]*\):[0-9]*/${USER}:\1:\2:${USER_GID}/" /etc/passwd fi ## Change UID for USER? if [ -n "${USER_UID}" ] && [ "${USER_UID}" != "`id -u ${USER}`" ]; then sed -i -e "s/^${USER}:\([^:]*\):[0-9]*:\([0-9]*\)/${USER}:\1:${USER_UID}:\2/" /etc/passwd fi for FOLDER in /data/gitea/conf /data/gitea/log /data/git /data/ssh; do mkdir -p ${FOLDER} done if [ $# -gt 0 ]; then exec "$@" else exec /bin/s6-svscan /etc/s6 fi
-
求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案
2022-01-11 13:48二、# 如何优雅的在 Docker 容器中指定用户及组权限的三种方式
如果平常有在玩 Docker 的用户肯定知道透过
docker command
启动的容器预设是使用root
用户来当作预设使用者及群组的。这样就会遇到一个问题,当主机环境你拥有 root 权限时就没有此问题。如果你没有 root 权限,又有需求在 Docker 容器內挂上 Volume,会发现产生出来的文件皆会是 root 权限,这时候在主机完全是无法写入的。本篇文章将教大家三种方式来设定容器使用者权限,以解决上述遇到的问题。使用 docker 指令时指定使用者
以进入一个 Ubuntu 容器为例,通过以下指令:
$ docker run -ti ubuntu /bin/bash
这时候我们可以通过
-u
方式将使用者uid
及群组gid
传入容器内。$ mkdir tmp $ docker run -ti -v $PWD/tmp:/test \ -u uid:gid ubuntu /bin/bash
如何找到目前使用者 uid 及 gid 呢,可以通过下面的方式。
$ id -u $ id -g
为了更加方便,上述指令可以改成:
$ docker run -ti -v $PWD/tmp:/test \ -u $(id -u):$(id -g) ubuntu /bin/bash
使用 Dockerfile 指定使用者
除了在 Docker 命令行指定外,你也可以在
dockerfile
内直接指定使用者。# Dockerfile USER 1000:1000
我个人不是很推荐这方式,除非是在
container
内独立建立使用者,并且指定权限。通过 docker-compose 指定权限
通过
docker-compose
可以一次启动多个服务。用user
可以指定使用者权限来写入特定的 volume。services: agent: image: xxxxxxxx restart: always networks: - proxy logging: options: max-size: "100k" max-file: "3" volumes: - ${STORAGE_PATH}:/data user: ${CURRENT_UID}
接着可以通过 .env 来指定变量的值。
STORAGE_PATH=/home/deploy/xxxx CURRENT_UID=1001:1001
总结
以上场景通常会发生在有挂载主机 Volume 进入容器内,但是你又没有 root 用户权限时。如果此时不指定使用者权限,这样生成出来的文件都会是 root 权限,一般用户无法写入,只能读取。
-
求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案
2022-01-11 13:48一、修改容器用户 UID 和 GID
docker
容器内的用户也算是千奇百怪了……一般情况下是没有什么影响的,但是有时我们想通过volume
把内容挂在出来的时候,就会出现权限的问题了。如果都改成777
明显是不合适的。如LinuxServer
提供的容器一般都会提供通过环境变量的方式来修改UID
和GID
。当然如果你千年不变的用root
那么当我什么也没说了……通过给
TiddlyWiki
制作docker
镜像的时候,实现了一个动态修改UID
和GID
的方案。通过启动entrypoint.sh
来修改容器内用户的信息达到和容器外用户一致的UID
和GID
。dockerfile
FROM node:lts-alpine3.13 MAINTAINER liuwentao@gmail.com RUN \ echo "https://mirrors.cloud.tencent.com/alpine/v3.11/main/" > /etc/apk/repositories && \ echo "https://mirrors.cloud.tencent.com/alpine/v3.13/community/" >> /etc/apk/repositories && \ apk add shadow && \ useradd -u 666 -U -d /config -s /bin/false abc && \ usermod -G users abc && \ npm install -g tiddlywiki@5.1.23 --registry=https://registry.npm.taobao.org EXPOSE 8080 VOLUME [ "/app" ] WORKDIR /app COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh CMD [ "/entrypoint.sh" ]
#!/usr/bin/env sh PUID=${PUID:-911} PGID=${PGID:-911} groupmod -o -g "$PGID" abc usermod -o -u "$PUID" abc groupmod -o -g "$PGID" abc usermod -o -u "$PUID" abc chown abc:abc /app if [ ! -f "/app/tiddlywiki.info" ]; then tiddlywiki /app --init server fi tiddlywiki /app --listen host=0.0.0.0
核心是通过
groupmod
和usermod
修改用户abc
的UID
和GID
。这两个软件在alpine
中对应的软件包是shadow
-
求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案
2022-01-11 08:27@88250 希望放开
Docker
用户权限,或则增加环境变量,可让用户自定义归属用户权限组 -
纪录片推荐
2020-12-31 11:10😋 虽然主流媒体平台我几乎都有会员,但是还是上 b 站看纪录片
我在故宫 600 年(我在故宫修文物姊妹篇)可以期待下
---- 以下有些 b 站曾经有过 😭
守护解放西系列
人生一串系列
贡嘎
第三极
香巴拉深处
航拍中国系列
本草中国系列
本草中华系列
布衣中国
丝路百工
万物滋养
大唐帝陵
风云战国之列国
...... -
希望思源笔记增加分屏预览功能
2020-12-25 11:55外部写完导入,图片/附件 还要重新弄,费不费事?
剪藏功能更费事
复制到思源笔记 -> 导出markdown文件 -> 导入第三方markdown编辑器 -> 删掉块id -> 整理编辑 -> 导入思源笔记
-
希望思源笔记增加分屏预览功能
2020-12-25 11:50这有啥好惊的,这需求不是很正常么?
用这笔记软件的人不说多,至少 60% 是码农吧。更习惯源码操作也没毛病啊。
论坛里发帖编辑模式还能让用户选择,为啥笔记就不行呢,你说对不对? -
关于思源笔记的小建议
2020-12-24 13:46 -
自建内网可用 JRebel 激活服务器
2020-12-23 09:37补充 docker 方式
docker 方便,完事
前提
服务器已安装 docker
部署
- 下载文件: jrebel.zip 提取码:kwe8
- 上传到服务器
- dockerFile 编译
docker build -t jrebel-ls .
- 运行
docker run -itd --name jrebel-ls --restart always -e PORT=9001 -p 9001:9001 jrebel-ls