我正在尝试通过以下示例使用docker创建一个PHP,Postgresql开发环境:https://hk.saowen.com/a/67350ecfcbbe9dd8befa286a4257d5f91565a124ba3c7776c2b1c37f8b638df0。但是,当docker尝试安装postgresql-client-9.6
时,我遇到了相关性问题。我收到的错误是postgresql-client-9.6 : Depends: libpq5 (>= 9.6.11) but 9.6.10-0+deb9u1 is to be installed
本教程尝试使用php:7.0-apache
和postgres:9.6
。我曾尝试更改PHP和Postgresql的版本,但是却收到了相同类型的错误,但依赖项编号不同。看来libpq5
已过时,而且我不知道如何获得最新版本。
我正在使用的Dockerfile是
FROM php:7.0-apache
RUN apt-get update && \
apt-get install -y libpq-dev gnupg && docker-php-ext-install pdo pdo_pgsql
RUN apt-get install -y wget
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main 9.6" > /etc/apt/sources.list.d/pgdg.list
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
apt-key add -
RUN apt-get update
RUN apt-get install -y postgresql-client-9.6
COPY ./wait-for-postgres.sh wait-for-postgres.sh
RUN chmod +x wait-for-postgres.sh
COPY src/ /var/www/html
和docker-compose.yml文件是
version: '3'
volumes:
psql-data:
services:
php-app:
build: ./app
image: myapp
container_name: php-app
env_file:
- ./env
depends_on:
- postgres
command: ["./wait-for-postgres.sh", "apache2-foreground"]
ports:
- 80:80
networks:
app-env:
postgres:
image: postgres:9.6
container_name: postgres
env_file:
- ./env
volumes:
- ./postgres/script/:/docker-entrypoint-initdb.d
- psql-data:/var/lib/posgresql/data
networks:
app-env:
networks:
app-env:
此博客文章准确地描述了问题,但是该解决方案对我不起作用:https://support.circleci.com/hc/en-us/articles/360003953613-Error-Installing-postgresql-client-9-6-on-Docker。预先感谢您提供的任何建议。
答案 0 :(得分:0)
我有类似的情况,我需要在现有的Docker映像上安装postgresql-client-10。相反,我在postgres:10图像之上构建了所需的图像。 希望这对您也有帮助。
答案 1 :(得分:0)
我自己也遇到了同样的问题。原来,我在apt中添加了错误的发行版存储库。我的映像基于Debian 9(代号拉伸),但是我添加了仓库或Debian 8(代号杰西):
我有这个(我的版本不对):
FROM ruby:2.5.0
RUN wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | apt-key add - && \
echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" >> /etc/apt/sources.list.d/pgdg.list
应该是这个(s / jessie / stretch /):
FROM ruby:2.5.0
RUN wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | apt-key add - && \
echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list
我猜你的问题是php:7.0-apache
映像不是基于Ubuntu 14.04(代号Trusty Tahr)的,但这就是您要回购的目的。
您可以通过运行以下命令检查版本:
docker run php:7.0-apache cat /etc/issue
我只是这样做了,看起来该图像也基于Debian Stretch。因此,根据您的情况,只需将Dockerfile更改为此:
FROM php:7.0-apache
RUN apt-get update && \
apt-get install -y libpq-dev gnupg && docker-php-ext-install pdo pdo_pgsql
RUN apt-get install -y wget
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgdg.list
RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
apt-key add -
RUN apt-get update
RUN apt-get install -y postgresql-client-9.6
COPY ./wait-for-postgres.sh wait-for-postgres.sh
RUN chmod +x wait-for-postgres.sh
COPY src/ /var/www/html