python - 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 。运行成功。Dockerfile
api
api
docker-compose up
但是,我不知道如何在此api
服务中运行 python。python
找不到控制台日志命令。
我尝试使用和 exe登录到api
容器,但我得到了docker-compose exec api /bin/bash
find / -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 安装正确?
===============
更新:
Dockerfile
在api
役:
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.yml
在api
:
services:
web:
build:
context: ./
dockerfile: web.docker
ports:
- "8080:80"
links:
- app
volumes:
- ./:/var/www
app:
build:
context: ./
dockerfile: Dockerfile
volumes:
- ./:/var/www
解决方案
您收到权限被拒绝错误,因为您定义了一个非 root 用户。如果你想检查是否安装了 python,你可以在容器内的命令提示符下通过python --version
. 您应该在 docker 文件中包含 python 命令来启动 api,这样当您运行 docker-compose up 时它就会启动,例如
CMD ["python", "<path to python api script>.py"]
推荐阅读
- javascript - Is there any way to display a native windows or desktop notification with javascript?
- php - array_merge 是否保留顺序?
- sql-server - 循环以在动态 OR 语句中添加值
- javascript - 反应:分页无法正常工作
- javascript - Postgresql 打开备份的困难
- spring-boot - 当 id 与正确的数据库行匹配时,JpaRepository findById 方法返回 Optional.empty?
- python-3.x - Keras“acc”指标——一种算法
- javascript - 在MVC的部分页面中加载div时调用JavaScript函数
- windows - 在 Windows 10 上更改代码页后基于命令行的工具问题
- amazon-web-services - 从 S3 存储桶文件创建表