以下代码在我的桌面上运行良好:
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setFont(new Font("SansSerif", Font.BOLD, 18));
Graphics2D graphics = (Graphics2D) g;
graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
graphics.drawString(s, 5, 20);
Run Code Online (Sandbox Code Playgroud)
但是,当我在我的服务器上运行此代码(在 Docker 容器内的 linux alpine 上运行的 openjdk)时,它失败并显示以下错误:
java.lang.UnsatisfiedLinkError: no fontmanager in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at sun.font.FontManagerNativeLibrary$1.run(FontManagerNativeLibrary.java:61)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerNativeLibrary.<clinit>(FontManagerNativeLibrary.java:32)
at sun.font.SunFontManager$1.run(SunFontManager.java:339)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.<clinit>(SunFontManager.java:335)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:82)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.getFont2D(Font.java:491)
at java.awt.Font.access$000(Font.java:224)
at java.awt.Font$FontAccessImpl.getFont2D(Font.java:228)
at sun.font.FontUtilities.getFont2D(FontUtilities.java:180)
at sun.java2d.SunGraphics2D.checkFontInfo(SunGraphics2D.java:669) …Run Code Online (Sandbox Code Playgroud) 我有以下 Dockerfile:
FROM alpine:3.3
RUN apk update \
&& apk add curl tar git gzip
RUN curl --retry 3 --retry-delay 20 --show-error --location --remote-name --silent "https://nodejs.org/dist/v6.2.0/node-v6.2.0-linux-x64.tar.gz" \
&& tar -xzf "node-v6.2.0-linux-x64.tar.gz" -C /usr/local --strip-components=1 --same-owner \
&& rm -rf "node-v6.2.0-linux-x64.tar.gz" \
&& ls -la /usr/local/bin && env \
&& /usr/local/bin/node -v \
&& npm cache clear
Run Code Online (Sandbox Code Playgroud)
构建图像给了我:
Sending build context to Docker daemon 13.51 MB
Step 1 : FROM alpine:3.3
---> 3e467a6273a3
Step 2 : RUN apk update && apk …Run Code Online (Sandbox Code Playgroud) 我正在基于python:2.7-alpine基本映像的 Docker 容器中运行 Flask webapp ,从 Debian 基本映像切换。
Flask 从/static目录中提供的所有图像都使用通用内容类型application/octet-stream而不是预期的特定内容类型提供,因此浏览器无法正确显示图像。
如何解决这个问题?
图像的大小golang和alpine左右不同300Mb。
使用golangimage 而不是 plain 有alpine什么好处?
构建这个 docker 文件并尝试使用 Bcrypt 来完成一个散列,它会出现段错误,我一生都无法弄清楚为什么。
FROM mhart/alpine-node:9.1.0
MAINTAINER James Claridge <james@claridgeand.co>
RUN mkdir /app
WORKDIR /app
RUN apk --no-cache add --virtual builds-deps build-base python
RUN npm config set python /usr/bin/python
RUN npm i -g npm
RUN npm install
RUN npm rebuild bcrypt --build-from-source
RUN apk del builds-deps
Run Code Online (Sandbox Code Playgroud) 嗨,我不知道如何在此容器内运行 cron 作业。
我发现了这个:How to run a cron job inside a docker container
但这会覆盖 CMD,我不知道如何保持 php-fpm 正常工作
当我运行时apk add --update ab出现错误:
bash-4.3# apk add --update ab
fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.6/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
ab (missing):
required by: world[ab]
bash-4.3# apk add ab
ERROR: unsatisfiable constraints:
ab (missing):
required by: world[ab]
Run Code Online (Sandbox Code Playgroud) Alpine 于 80 月 8 日支持 Chromium v77。
参考:https : //pkgs.alpinelinux.org/packages?name=chromium&branch=edge
尝试复制下载 Chromium v77 并运行 Puppeteer v1.20 的步骤,但在运行时出现错误:
Error for printPdf()
{}
Error: Failed to launch chrome!
Error relocating /usr/lib/chromium/chrome: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found
Error relocating /usr/lib/chromium/chrome: _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found
Error relocating /usr/lib/chromium/chrome: hb_subset_input_set_retain_gids: symbol not found
Error relocating /usr/lib/chromium/chrome: _ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info: symbol not found
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
at onClose (/usr/src/app/node_modules/puppeteer/lib/Launcher.js:348:14)
at Interface.<anonymous> (/usr/src/app/node_modules/puppeteer/lib/Launcher.js:337:50)
at Interface.emit (events.js:214:15)
at Interface.close (readline.js:403:8)
at Socket.onend (readline.js:180:10)
at Socket.emit (events.js:214:15)
at endReadableNT (_stream_readable.js:1178:12)
at …Run Code Online (Sandbox Code Playgroud) 我有一个包含 docker 文件、attack.py 和 requirements.txt 的目录。
使用它,我创建了以下 dockerfile:
FROM arm64v8/python:3.7-alpine
COPY qemu-arm-static /usr/bin
COPY ./ app-ids
WORKDIR /app-ids
RUN pip install --no-cache-dir -r requirements.txt
CMD["python","./attack.py"]
Run Code Online (Sandbox Code Playgroud)
但是,pip install 行抛出:standard_init_linux.go:211:exec user process 导致“没有这样的文件或目录”
我不明白为什么。使用 ls、pwd 等命令尝试调试会产生相同的错误。
谁能解释一下我到底做错了什么?
每次我构建容器时,我都必须等待apk add docker完成,这需要很长时间。由于每次下载相同的内容时,我是否可以以某种方式强制 Docker 缓存 apk 的下载以用于开发目的?
这是我的 Dockerfile:
FROM golang:1.13.5-alpine
WORKDIR /go/src/app
COPY src .
RUN go get -d -v ./...
RUN go install -v ./...
RUN apk add --update docker
CMD ["app"]
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我用这部分volumes: - /var/run/docker.sock:/var/run/docker.sock我docker-compose.yml,如果该事项使用兄弟容器。
编辑:我发现谷歌docker.tgz 在 Chromium 中复制:
# add docker client -- do not install docker via apk -- it will try to install
# docker engine which takes a lot of space as well (we don't need …Run Code Online (Sandbox Code Playgroud)