标签: alpine-linux

Alpine中可以安装CloudWatch Agent吗

Alpine 中是否可以安装有效的 CloudWatch 代理包?我们希望在 Alpine 上为 CloudWatch Agent 构建自定义 docker,但可以在https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/download-cloudwatch-agent-commandline.html中进行下载中的可用下载似乎不起作用(我尝试了一些 deb 或 rpm)。

一些错误:无法安装下载的 deb 文件:

/ # dpkg -i -E amazon-cloudwatch-agent.deb
dpkg: error processing archive amazon-cloudwatch-agent.deb (--install):
package architecture (amd64) does not match system (musl-linux-amd64)
Run Code Online (Sandbox Code Playgroud)

并无法安装下载的 rpm 文件:

/ # rpm -U amazon-cloudwatch-agent.rpm
error: Failed dependencies:
/bin/sh is needed by amazon-cloudwatch-agent-1.247347.6b250880-1.x86_64
Run Code Online (Sandbox Code Playgroud)

CloudWatch Agent 是否支持 Alpine 有明确的答案吗?显然它是由 CloudWatch Log Agent 支持的。

amazon-cloudwatch dockerfile alpine-linux

5
推荐指数
1
解决办法
686
查看次数

php7.2-openssl Alpine Docker 安装错误

我正在使用 Alpine、php7.2-fpm 和 Composer 构建 Docker 镜像。

尝试安装 Composer 时会出现问题,它使用 https 通过 php 下载安装程序。

我添加了存储库以便能够安装 php7.2(用于安装 Composer)及其软件包:

RUN wget -O /etc/apk/keys/phpearth.rsa.pub https://repos.php.earth/alpine/phpearth.rsa.pub && \
    echo "https://repos.php.earth/alpine/v3.7" >> /etc/apk/repositories && \
    apk update
Run Code Online (Sandbox Code Playgroud)

当我尝试下载composer时出现以下错误:

/ # php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
PHP Warning:  copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
PHP   2. copy() Command line …
Run Code Online (Sandbox Code Playgroud)

php composer-php docker php-openssl alpine-linux

5
推荐指数
1
解决办法
1102
查看次数

OpenJDK 17 Alpine 镜像

我正在寻找基于 alpine 的 openjdk 17 docker 镜像。看起来我们这里有一个

https://hub.docker.com/layers/openjdk/library/openjdk/17-alpine/images/sha256-a996cdcc040704ec6badaf5fecf1e144c096e00231a29188596c784bcf858d05?context=explore

但下面的存储库显示它尚未准备好正式发布。所以我想知道上面的docker镜像从哪里获取源文件。

http://jdk.java.net/17/

java alpine-linux openjdk-17

5
推荐指数
1
解决办法
2万
查看次数

Docker npm install --生产不起作用

我有一个 dockerfile,其中使用 alpine-nodejs 版本 16 作为基础映像。npm 版本是 8。

npm install --production当执行的步骤时docker build,它还会安装 package.json 的 dev-dependencies 下列出的依赖项,这与生产标志的用例相反。我也用过npm install --only=production,但似乎也不起作用。

在 alpine nodejs 版本 14 中,该标志按预期工作,并且开发依赖项未安装在容器中。alpine 节点版本 16 镜像有问题吗?谢谢。

npm docker dockerfile npm-install alpine-linux

5
推荐指数
1
解决办法
7086
查看次数

Docker Alpine 以另一个用户身份执行命令

我在使用运行 Spring boot 应用程序的 amazoncorretto-alpine 映像时遇到问题。为了启动容器,我使用特定的 bash 脚本(以及其他内容)尝试运行 Spring boot 应用程序的可执行 jar。

我的需要是使用不同的用户运行可执行 jar,因此当 bash 脚本使用 root 运行时,“java -jar springBoot.jar”必须以“spring”用户身份执行。

在 docker 文件中,已创建用户和组并授予 springBoot.jar 的权限,如下所示:

...
RUN addgroup -S spring && adduser -S -D spring -G spring
RUN chown spring:spring springBoot.jar
...
CMD ["myBash.sh"]
Run Code Online (Sandbox Code Playgroud)

用户和组已存在,文件的权限已正确配置,并且容器通过执行 myBash.sh 启动。

在以“root”权限运行的 bash 中,我使用此命令行与另一个用户一起执行 jar:

su - spring -c "java -jar springBoot.jar"
Run Code Online (Sandbox Code Playgroud)

我通过将 -c“命令”放在用户之前进行了一些其他测试,但错误始终是相同的:

“该帐户不可用”

启动容器时,此消息会打印在 Docker 控制台中。

图中的阿尔卑斯版本:

“Alpine Linux v3.15”

注意:如果我删除上面的指令“su - spring....”并仅在 bash 脚本中运行 java -jar springBoot.jar 一切正常,但应用程序以 root 启动(如预期)。

任何人都知道可能是什么问题?

bash docker spring-boot docker-swarm alpine-linux

5
推荐指数
1
解决办法
4926
查看次数

为什么在 Docker(在 Mac 上)上安装软件包时出现 SSL 错误?

我在 MacOS 上通过 Docker Desktop 运行 Docker,在容器中安装软件包时遇到很多麻烦,因为它无法验证任何 ssl 证书。

\n

apk update例如,当我运行时,我收到此错误:

\n
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz\n139797308250952:error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1914:\nERROR: https://dl-cdn.alpinelinux.org/alpine/v3.14/main: Permission denied\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试bundle install

\n
Could not verify the SSL certificate for https://rubygems.org/.\nThere is a chance you are experiencing a man-in-the-middle attack, but most likely your system doesn\'t have the CA certificates needed for verification.\n
Run Code Online (Sandbox Code Playgroud)\n

甚至是一个简单的卷曲curl https://google.com.br

\n
curl: (60) SSL certificate problem: unable to get local issuer certificate\nMore details here: https://curl.se/docs/sslcerts.html\n\ncurl failed to …
Run Code Online (Sandbox Code Playgroud)

macos ssl docker alpine-linux docker-desktop

5
推荐指数
2
解决办法
3万
查看次数

docker中npm start启动node应用程序的问题

我阅读了一些Docker 和 Node.js 最佳实践文章,例如https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md使用 Docker 容器化 Node.js Web 应用程序的 10 个最佳实践,或者Node 和 NPM 的 Dockerfile 良好实践。所有这些文章至少是在 2021 年写或更新的,我不列出 2021 年之前写的文章,但也有不少。

\n

他们都反对CMD ["npm", "run", "start"]。主要原因是 npm 会吞掉SIGTERM 和 SIGINT 等退出信号,因此我的节点应用程序中的正常关闭代码将无法运行。

\n

我猜旧的 npm 就是这种情况(虽然我没有测试它),但我已经测试了 node14+npm6 和 node16+npm8,我可以验证 npm6/8 不会吞下这些事件和我的优雅关闭代码正在运行。不确定这是否是因为 npm 修复了它。

\n

因此,唯一的问题仍然是还有 1 个进程 npm 需要运行,即 NPM 作为PID 1运行。一些文章说问题是“PID 1 不会响应 SIGINT”,但据我证实,情况并非如此。

\n

许多文章(例如这个nodejs文档)建议只是,CMD [ "node", "server.js" ]但也在https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#handling-kernel-signals …

signals node.js npm docker alpine-linux

5
推荐指数
1
解决办法
2135
查看次数

nginx 和 nginx:alpine 有什么区别?

我的目标是理解为什么会有nginx图像和nginx:alpine图像。

我知道的:

  1. nginx更大,52.79 MB。
  2. nginx使用debian:bullseye-slim.
  3. nginx:alpine较小,为 9.51 MB。
  4. nginx:alpine使用alpine.
  5. 两个图像都可以很好地运行静态 htmldocker run -p 8080:80 -v ${PWD}:/usr/share/nginx/html nginx:alpine

我无法理解为什么默认图像使用debian:bullseye-slim而不是alpine.

nginx debian-based docker alpine-linux

5
推荐指数
0
解决办法
5109
查看次数

PHP NumberFormatter 总是给我默认的 en_US

当尝试在我的 PHP 8.1 alpine docker 容器中格式化货币时,我总是得到默认区域设置 (en_US)。

\n
$ docker run -it --rm php:8.1-fpm-alpine /bin/ash\n# apk update && apk add icu-dev\n# docker-php-ext-configure intl && docker-php-ext-install intl\n# php -a\n> $formatter = new NumberFormatter('nl_NL', NumberFormatter::CURRENCY);\n> echo $formatter->getLocale();\nen_US\n> echo $formatter->format(1234.567);\n\xe2\x82\xac1,234.57\n
Run Code Online (Sandbox Code Playgroud)\n

我期望 getLocale() 返回 nl_NL 和 format 返回 \xe2\x82\xac1.234,57。

\n

如果我尝试 locale en_GB,getLocale() 确实返回 en_GB。

\n

也欢迎任何有关编写更好问题的建议。

\n

php intl docker alpine-linux

5
推荐指数
1
解决办法
631
查看次数

基于高山的重复图像中的“ Not tty”错误

这是我在stackoverflow上遇到的第一个问题,因此我希望它遵循社区准则:

我已经基于一个已经存在的映像构建了一个docker 映像,其唯一目的是在容器中运行双重性以将文件和文件夹备份到欧洲的Amazon S3存储桶。

当在由图像产生的容器内手动运行时,Duplicity工作了几天。现在,我继续使用CoreOS通过主机上的单元文件运行容器,但事情不再起作用-但是该命令也无法正常运行,我在一个双重容器中手动运行了它。

运行命令:

 docker run --rm  --env-file=<my backup env file>.env --name=<container image> -v <cache container>:/home/duplicity/.cache/duplicity -v <docker volume with gpg keys>:/home/duplicity/.gnupg --volumes-from <docker container of interest> gymnae/duplicity
Run Code Online (Sandbox Code Playgroud)

env文件包含以下内容:

PASSPHRASE=<my super secret passphrase>
AWS_ACCESS_KEY_ID=<my aws access key id>
AWS_SECRET_ACCESS_KEY=<my aws access key>
SOURCE_PATH=<where does the data come from>
REMOTE_URL=s3://s3.eu-central-1.amazonaws.com/<my bucket>
PARAMS_CLEAN="--remove-older-than 3M --force --extra-clean"
ENCRYPT_KEY=<derived from the gpg key>
Run Code Online (Sandbox Code Playgroud)

并且init.sh被调用的docker run看起来像这样:

#!/bin/sh
duplicity \
         --verbosity 8 \
         --s3-use-ia \
         --s3-use-new-style  \ …
Run Code Online (Sandbox Code Playgroud)

gnupg amazon-s3 docker duplicity alpine-linux

4
推荐指数
1
解决办法
1136
查看次数