首页 > 解决方案 > docker compose 找不到已安装的python

问题描述

我有一个在 ubuntu 容器上运行的 Web 应用程序,根目录docker-compose.yml如下:

services:
    api: 
        volumes:
            - ./api/:/var/www
    vue: ...

我在下目录中使用在RUN apt-get update && apt-get install -y python服务中安装 python 。运行成功。Dockerfileapiapidocker-compose up

但是,我不知道如何在此api服务中运行 python。python找不到控制台日志命令。

我尝试使用和 exe登录到api容器,但我得到了docker-compose exec api /bin/bashfind / -type d -name "python"

find: '/etc/ssl/private': Permission denied
find: '/root': Permission denied
/usr/share/gcc-6/python
find: '/proc/tty/driver': Permission denied
find: '/var/lib/apt/lists/partial': Permission denied
find: '/var/cache/apt/archives/partial': Permission denied
find: '/var/cache/ldconfig': Permission denied

我的api服务有两个子服务,如下docker-compose.yml所示:

services:
   web:
       links:
           - app
       volumes:
           - ./:/var/www
   app: ...

那么如何在我的api服务中使用 python 呢?或者我怎么知道 python 安装正确?

===============

更新:

Dockerfileapi役:

FROM php:7.1.27-fpm

# Set to keep file permissions same as host for mounted volume
RUN useradd -m -u 1000 ubuntu

# Install GD
RUN apt-get update && apt-get install -y libfreetype6-dev libjpeg-dev libpng-dev libfontconfig1 libxrender1 git zip mysql-client && \
    docker-php-ext-configure gd \
          --enable-gd-native-ttf \
          --with-freetype-dir=/usr/include/freetype2 \
          --with-jpeg-dir=/usr/lib \
    && docker-php-ext-install gd

# Install MySQL
RUN docker-php-ext-install pdo_mysql

# Install Other Dependencies
RUN docker-php-ext-install bcmath
RUN docker-php-ext-install zip
RUN docker-php-ext-install exif

# Install Composer
RUN apt-get install -y curl && \
    curl -sS https://getcomposer.org/installer | php && \
    mv composer.phar /usr/local/bin/composer && \
    composer self-update && \
    apt-get remove --purge curl -y && \
    apt-get clean

# Configure PHP
RUN echo "php_admin_flag[log_errors] = On">>/usr/local/etc/php-fpm.conf

# Install Xdebug
RUN pecl install xdebug-2.9.8 && \
    docker-php-ext-enable xdebug

WORKDIR /var/www

# Install python
RUN apt-get update && apt-get install -y python

docker-compose.ymlapi

services:
    web:
        build:
            context: ./
            dockerfile: web.docker
        ports:
            - "8080:80"
        links:
            - app
        volumes:
          - ./:/var/www
    app:
        build:
            context: ./
            dockerfile: Dockerfile
        volumes:
            - ./:/var/www

标签: pythondockerdocker-compose

解决方案


您收到权限被拒绝错误,因为您定义了一个非 root 用户。如果你想检查是否安装了 python,你可以在容器内的命令提示符下通过python --version. 您应该在 docker 文件中包含 python 命令来启动 api,这样当您运行 docker-compose up 时它就会启动,例如

CMD ["python", "<path to python api script>.py"]

推荐阅读