要在python中使用PostgreSql,我需要
pip install psycopg2
Run Code Online (Sandbox Code Playgroud)
但是,它依赖于libpq-dev和python-dev.我想知道如何在高山中安装依赖项?谢谢.
这是一个Dockerfile:
FROM python:2.7-alpine
RUN apk add python-dev libpq-dev
RUN pip install psycopg2
Run Code Online (Sandbox Code Playgroud)
输出是:
步骤3:运行apk添加python-dev libpq-dev --->运行3223b1bf7cde警告:忽略APKINDEX.167438ca.tar.gz:没有这样的文件或目录警告:忽略APKINDEX.a2e6dac0.tar.gz:没有这样的文件或目录错误:不满足约束:libpq-dev(缺失):必需:world [libpq-dev] python-dev(缺失):必需:world [python-dev]错误:服务'服务'无法构建:命令'/ bin/sh -c apk添加python-dev libpq-dev'返回非零代码:2
我在 alpine linux 容器中有一个小型 python 应用程序,这里是 dockerfile:
FROM alpine
# basic flask environment
RUN apk add --no-cache bash git nginx uwsgi uwsgi-python py2-pip \
&& pip2 install --upgrade pip \
&& pip2 install flask
# application folder
ENV APP_DIR /app
ENV FLASK_APP app.py
# app dir
RUN mkdir ${APP_DIR} \
&& chown -R nginx:nginx ${APP_DIR} \
&& chmod 777 /run/ -R \
&& chmod 777 /root/ -R
VOLUME [${APP_DIR}]
WORKDIR ${APP_DIR}
# copy config files into filesystem
COPY nginx.conf /etc/nginx/nginx.conf …Run Code Online (Sandbox Code Playgroud) 我在 Windows 10 上使用 docker 来构建完整的网络堆栈(php、nginx、mysql 8)。使用 docker 撰写。
docker-compose.yml
在这里,我使用服务来构建 Web 应用程序。但我只会向你展示 mysql 服务
version: '3.8'
services:
db:
build: services/mysql
container_name: db
image: projects/laradock_mysql:latest
env_file: ../.env
restart: on-failure
volumes:
- ./storage/data:/var/lib/mysql
ports:
- 3306:3306
networks:
- sites
networks:
sites:
driver: bridge
ipam:
driver: default
config:
- subnet: 10.100.36.0/24
Run Code Online (Sandbox Code Playgroud)
MySQL Docker 文件
FROM mysql:8
COPY conf/my.cnf /etc/mysql/conf.d
EXPOSE 3306
Run Code Online (Sandbox Code Playgroud)
MySQL配置文件
[mysqld]
innodb_flush_method=O_DSYNC
innodb_flush_log_at_trx_commit=0
default-authentication-plugin=mysql_native_password
Run Code Online (Sandbox Code Playgroud)
docker-compose up 时的输出日志
2020-06-18T04:40:52.552867Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-06-18T04:40:55.549460Z 1 [Warning] [MY-012579] …Run Code Online (Sandbox Code Playgroud) 如果我使用的是Alpine 3.8,如何从Alpine Edge存储库中添加特定的程序包?甚至支持吗?据我所知,没有等效的反向端口。
我想添加新版本:https : //pkgs.alpinelinux.org/package/edge/community/armhf/librdkafka
而不是3.8版本中的旧版本:https : //pkgs.alpinelinux.org/package/v3.8/community/s390x/librdkafka
我有使用 SQLite 数据库的 Node.js 应用程序。要在 ARM 架构上使用它,我需要构建 sqlite3 二进制文件,因此在构建 Docker 映像时需要一些包。
这是我的 Dockerfile:
FROM node:14-alpine as builder
WORKDIR /app
COPY package*.json ./
RUN apk update \
&& apk --no-cache --virtual build-dependencies add python make g++ \
&& npm install --production
COPY . .
RUN mkdir -p ./public ./data \
&& cd ./client \
&& npm install --production \
&& npm run build \
&& cd .. \
&& mv ./client/build/* ./public \
&& rm -rf ./client \
&& apk del …Run Code Online (Sandbox Code Playgroud) 我正在使用 Alpine linux 3.12 运行构建,构建失败,并显示以下输出,指示构建梁和具有 C++ 依赖项的 ERTS 时出错。
Error relocating /opt/app/erts-12.3.2.1/bin/beam.smp: _ZSt28__throw_bad_array_new_lengthv: symbol not found
Error relocating /opt/app/erts-12.3.2.1/bin/beam.smp: pthread_getname_np: symbol not found
Run Code Online (Sandbox Code Playgroud)
到目前为止,我一直在研究这两个特定错误的线程以及有关失败的各种线程。
是否有一些依赖项可能需要更新?
我正在尝试将postgis安装到postgres容器中.Dockerfile:
FROM postgres:9.6.4-alpine
RUN apk update \
&& apk add -u postgresql-9.6-postgis-2.4 postgresql-9.6-postgis-2.4-scripts \
&& rm -rf /var/lib/apt/lists/*
COPY ./scripts/postgis.sh /docker-entrypoint-initdb.d/postgis.sh
Run Code Online (Sandbox Code Playgroud)
postgis.sh:
#!/bin/sh
for DB in $(psql -t -c "SELECT datname from pg_database where datname = 'backend'"); do
echo "Loading PostGIS extensions into $DB"
"${psql[@]}" --dbname="$DB" <<-'EOSQL'
CREATE EXTENSION IF NOT EXISTS postgis;
EOSQL
done
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
错误:不可满足的约束:postgresql-9.6-postgis-2.4(缺失):所需:world [postgresql-9.6-postgis-2.4] postgresql-9.6-postgis-2.4-scripts(缺失):所需:world [postgresql-9.6 -postgis-2.4-scripts]命令'/ bin/sh -c apk update && apk add -u postgresql-9.6-postgis-2.4 postgresql-9.6-postgis-2.4-scripts && rm -rf/var/lib/apt/lists/*'返回非零代码:2
我发现了类似的问题,例如:
但它并没有解决我的问题.如何用apk添加postgis扩展到我的postgres容器?
我的 Dockerfile:
FROM frolvlad/alpine-glibc:latest
ADD jdk-11.0.6_linux-x64_bin.tar.gz /usr/java
ENV JAVA_HOME=/usr/java/jdk-11.0.6
ENV PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
当我java -version在容器中运行命令时,我得到了这个段错误:

我怎么解决这个问题?
我正在编写一个 Lambda 函数,使用 unoconv 和 libreoffice 将 excel 文件转换为 PDF,为此我使用 alpine 基础图像。Dockerfile 如下。
\n# Define global args\nARG FUNCTION_DIR="/home/app/"\nARG RUNTIME_VERSION="3.9"\nARG DISTRO_VERSION="3.12"\n\n# Stage 1 - bundle base image + runtime\n# Grab a fresh copy of the image and install GCC\nFROM python:${RUNTIME_VERSION}-alpine${DISTRO_VERSION} AS python-alpine\n# Install GCC (Alpine uses musl but we compile and link dependencies with GCC)\nRUN apk add --no-cache \\\n libstdc++\n\n# Stage 2 - build function and dependencies\nFROM python-alpine AS build-image\n# Install aws-lambda-cpp build dependencies\nRUN apk add --no-cache \\\n build-base \\\n …Run Code Online (Sandbox Code Playgroud) 我正在运行一个nodeJS应用程序集群 - 它应该非常小,因为它们作为微服务运行.只有少数人需要额外的东西,如bcrypt或imagemagick - 这对我来说不时会有些麻烦.
现在我node:10.13-alpine用作所有Dockerfiles的基本映像来构建我的应用程序.对于其中一些我需要通过apk等添加依赖项.所以这些图像变大了.这是使用高山图像的最佳方法,通过添加所需的包(例如python,gcc ......)来增加图像?或者我应该使用完整的图像?
如果我会使用node:10.13,基本图像会更大,但如果我的理解是正确的,我的应用程序只会添加一个小层,因为使用相同的基本图像.所以最后使用一个大节点图像会更好?
alpine-linux ×10
docker ×8
dockerfile ×2
apk ×1
aws-lambda ×1
java ×1
java-11 ×1
linux ×1
mysql ×1
node.js ×1
postgresql ×1
python ×1
python-2.7 ×1
repository ×1
sqlite ×1
ssl ×1
unoconv ×1