我想在 docker 中使用python 3.x和pip3安装一些 python 库。我使用以下命令来执行此操作,但未安装它们。
FROM alpine:latest
RUN apk add python3 py3-pip3 && \
pip3 install --upgrade pip3 && \
pip3 install wget &&\
pip3 install sys &&\
pip3 install threading &&\
pip3 install time &&\
pip3 install requests &&\
pip3 install paho-mqtt &&\
pip3 install logging &&\
rm -rf /var/cache/apk/*
COPY NumSide.py /home/mehdi/Download/NumSide.py
CMD ["python3","/home/mehdi/Download/NumSide.py"]
Run Code Online (Sandbox Code Playgroud)
下面,我得到的错误:
错误:无法满足的约束:py3-pip3(缺失):需要:world[py3-pip3] 命令'/bin/sh -c apk add python3 py3-pip3 && pip3 install --upgrade pip3 && pip3 install wget &&pip3 install …
我正在对我的一个 docker 容器进行一些“常识”强化,我的想法表明我可以在安装完所有依赖项后尝试从 Alpine linux 映像中卸载 APK 和 PIP。
我很难找到有关这样做的任何信息。我的想法是容器是短暂的,所以永远不需要在运行的容器中安装任何东西。
有人做过吗?谢谢!
我正在使用MariaDB构建Django应用程序的基于Alpine的图像,但我无法弄清楚应该添加哪个依赖项,以便我的应用程序可以正确连接到数据库。Dockerfile
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
Run Code Online (Sandbox Code Playgroud)
好吧,我以为我做到了。从我在这篇文章中读到的,在这个讨论中,mariadb-dev在Alpine中相当于default-libmysqlclient-dev在基于Debian的系统中。此外,Alpine 中的mysql-client 包只是一个虚拟包(包含mariadb-dev、mariadb-client等)。这是Dockerfile:
# pull official base image
FROM python:3.7-alpine
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# set work directory
WORKDIR /usr/src/cms
# install mysqlclient
RUN apk update \
&& apk add --virtual build-deps gcc python3-dev musl-dev \
&& …Run Code Online (Sandbox Code Playgroud) codecept -c src run acceptance在alpine linux上执行命令时输出如下错误:
无 base64:无法识别的选项:w BusyBox v1.30.1 (2019-06-12 17:51:55 UTC) 多调用二进制。
用法:base64 [-d] [文件]
Base64 编码或解码 FILE 到标准输出 -d 解码数据
我看不到 codecept 正在执行的命令。
我试图在 apk 中添加 base64,但 base64 不存在。
Dockerfile:
FROM node:10-alpine AS node
FROM php:7.1-fpm-alpine
ENV GITHUB_OAUTH_TOKEN test
ENV COMPOSER_ASSET_VERSION 1.3.1
ENV DOCKERIZE_VERSION v0.6.1
ENV PATH=~/.composer/vendor/bin:$PATH
# install packages
RUN apk add -U --no-cache \
curl-dev \
libxml2-dev \
libpng-dev \
libjpeg-turbo-dev \
zip \
libzip-dev \
unzip \
gmp-dev \
python \
make \ …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的基本 docker 映像从 centos 7 转换到 alpine,但是在尝试安装 pip 包时收到 gcc 错误。
这是收到的错误的片段:
Successfully built backports.ssl-match-hostname configobj dpkt iniparse IPy kitchen logmatic-python maxminddb NeuroTools procfs pycparser python-json-logger pyudev repoze.lru scandir scapy
Failed to build guppy kiwisolver numpy psutil pygpgme pyliblzma python-ldap pyxattr subprocess32
Installing collected packages: atomicwrites, attrs, backports.functools-lru-cache, backports.ssl-match-hostname, certifi, chardet, six, configobj, configparser, contextlib2, cycler, decorator, dnspython, dpkt, urllib3, elasticsearch, elasticsearch5, elasticsearch6, funcsigs, ipaddress, maxminddb, idna, requests, geoip2, guppy, scandir, pathlib2, more-itertools, zipp, importlib-metadata, iniparse, IPy, kafka, kafka-python, kitchen, …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 Dockerfile 来 dockerize 一个 php + nodejs 应用程序。所以我从基于 alpine:3.8 的 php:7.2.13-fpm-alpine 图像开始。作为研究,我发现我可以通过命令添加最新的 alpine repositoriy
apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main/ nodejs
Run Code Online (Sandbox Code Playgroud)
但是,使用此命令,我只获得了 nodejs v10.16.3 而我想要最新的 (v13.0.1) 是否可以实现它?
我正在尝试在 Alpine 3.10 docker 容器内运行 GeckoDriver v0.26.0,特别是python:3.6.6-alpine3.10.
在弄清楚一些事情之后,我碰壁了:
/ # geckodriver --version
Error relocating /usr/bin/geckodriver: __register_atfork: symbol not found
Error relocating /usr/bin/geckodriver: __res_init: symbol not found
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
首先启动 docker 容器:
docker run -it python:3.6.9-alpine3.10 /bin/sh
Run Code Online (Sandbox Code Playgroud)
然后尝试安装 GeckoDriver
/ # wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
/ # tar -zxf geckodriver-v0.26.0-linux64.tar.gz -C /usr/bin
/ # geckodriver --version
/bin/sh: geckodriver: not found.
Run Code Online (Sandbox Code Playgroud)
真的吗?但我刚刚提取了它......嗯......好吧。它提取正确吗?是$PATH正确的吗?
/ # ls -lah /usr/bin/geckodriver
-rwxr-xr-x 1 1000 1000 6.7M Oct 12 10:19 /usr/bin/geckodriver
/ # echo $PATH …Run Code Online (Sandbox Code Playgroud) 我们在 gitlab CI 中的 Alpine Docker 镜像中运行 vault-cli。升级后,当调用 Vault 时,我们会得到这个:
/bin/bash: line 117: /usr/sbin/vault: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
菲利克斯
最近,在尝试解决“大”DNS 查询(当答案大于 512M 时)时,我们在 EKS 上遇到了一些基于 Alpine 图像(节点:12.18.1-alpine)的微服务的 DNS 问题。
所以我尝试运行这个脚本来测试 DNS 解析:
var dns = require('dns');
var w3 = dns.lookup('hugedns.test.dziemba.net', function (err, addresses, family) {
console.log(addresses);
});
Run Code Online (Sandbox Code Playgroud)
每个图像有 2 个不同的场景
从我看到的情况来看,Alpine 正在使用 musl(它不支持 DNS 来使用 TCP?)库而不是 glibc,因为 DNS 协议使用的是 UDP,并且仅在查询大于 512M 时才尝试回退到 TCP。所以我的理论是这是根本原因,但由于它对我有用并且在 EKS 上失败让我想知道问题在哪里可以传递......
有什么想法吗?
EKS v1.16 coredns:v1.6.6
BTW,这是我的第一篇文章,如果需要任何信息,请告诉我
为 Nginx 设置 SSL 并发出请求后,我收到带有神秘消息的乱码响应client sent invalid method while reading client request line。
我在 Alpine Docker 容器中使用 Let's Encrypt 生成了证书(对于上下文,与错误无关)。
这是一个屏幕截图:
简化的 Nginx 虚拟主机配置如下:
server {
listen 443;
ssl_certificate /vsdroot/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /vsdroot/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_dhparam /vsdroot/letsencrypt/ssl-dhparams.pem;
include /vsdroot/letsencrypt/options-ssl-nginx.conf;
root /vsdroot;
location / {
index index.html;
}
Run Code Online (Sandbox Code Playgroud)
安全注意事项:我的 SSL 密钥位于 Nginx 文档根目录内,仅用于本地测试,请勿在生产环境或任何地方执行此操作!
alpine-linux ×10
docker ×9
dockerfile ×2
pip ×2
codeception ×1
django ×1
dns ×1
gcc ×1
geckodriver ×1
kubernetes ×1
mariadb ×1
mysql ×1
nginx ×1
node.js ×1
php ×1
python ×1
tcp ×1