Tag: python

用python应用程序使用PyQt4库构builddocker图像

我正在试图dockerise一个小型的python应用程序。 python代码使用PyQt4库。 该应用程序有一些testing单位,我运行时,我build立的形象。 像下面这样: RUN [ "/bin/bash", "-c", "source activate conda_environment && python -m unittest tests/tests_html_consistency.py" ] python代码中的PyQt4库需要一个X服务器来完成它的任务,但是docker没有,所以,不幸的是,当我生成图像时,我得到以下错误: python -m unittest: cannot connect to X server 在其他类似的堆栈问题上,我发现可能的解决scheme是简单地将X服务器的套接字作为Docker卷装入,并告诉Docker使用它。 docker run -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY TheImage 但是如何在图像构build时做到这一点? 上述命令仅在图像已经build立时才起作用,在“docker运行”时间。 而且,如果主机是一个aws实例(因此没有x服务器)会工作吗? 我不这么认为

我如何获得从另一个容器(Docker Compose)运行的RabbitMQ的IP地址?

我正在学习这个教程。 在那里,我需要将RabbitMQ IP地址设置为我的Celery设置。 我在docker-compose.yml中有三个容器:NGINX,Django + Celery和RabbitMQ。 这些都是用docker-compose up 。 但是,我需要在不同的容器中有celery.py的RabbitMQ IP地址。 通过Google, docker-machine ip <container>应该是解决scheme。 但是, docker-machine只能运行容器AFAIK。 那么,如何将容器IP地址传递到同一个docker-compose.yml文件中的另一个容器? 在这种情况下,我想要我的RabbitMQ IP地址。

任务吞吐量不会随着多个工作容器和多个用户而增加

我们正在为每个用户运行大量的后台任务,但是增加处理这些任务的线程数量并不能使每分钟执行的任务数量达到预期的加速 – 奇怪的是,只有在多个用户涉及任务 在这种情况下,“worker”是一个Python 3.6容器,它使用threading模块运行5个线程,每个线程使用同一个Google Cloud PubSub主题 这是一个演示这个问题的例子 testing1:任务队列中的800个任务,所有任务都属于1个用户(A) testing2:2000任务在另一个任务队列中,所有任务都属于另一个用户(B) testing3:我们同时运行来自1和2的两个任务队列(在两个队列中均消耗),共计2800个任务。 我们运行testing1与1个工人容器,这需要大约30分钟 我们运行testing1与2个工人容器,这需要大约15分钟才能完成 我们用1个工作容器运行testing2,这需要大约120分钟才能完成 我们用2个工作容器运行testing2,这需要大约70分钟才能完成 我们用2个工作容器运行testing3,这需要大约200分钟才能完成 我们用4个工作容器来运行testing3,这需要200多分钟才能完成 据我所知,没有“死”的线程(死锁或其他),但有一个可能的情况下线程执行速度比预期慢得多? 当我们有4个工作容器/ 20个线程时,为什么吞吐量不会增加? 还有什么可以debugging来理解为什么吞吐量没有增加? 同样,它似乎只在同时执行多个任务队列时发生。 有关工人集装箱与之交谈的更多信息以及我们迄今为止发现的信息: 工作者容器都在通过HTTP / S进行通信: 一个由Google云SQLpipe理的数据库实例(读写)。 我们没有看到任何显着的性能下降与多达100线程同时阅读或写作 一个弹性search节点(读写)。 每个用户都有自己的索引,每个任务都附有索引。 我们观察到,多个指标同时编制时,指数performance出现亏损; 然而使用批量写入模式并没有改善这一点。 另一个后端服务完成了任务的一部分,看着这个我们并没有发现它是一个瓶颈,因为它是独立的 Google Pub-Sub用于拉取和确认任务 第三方API – 我们没有遇到任何费率限制

在本地机器上运行的django无法连接到运行MYSQL的Docker容器

大家好,所以我试图在我的本地机器上运行Django来连接到运行mysql的docker容器,但试图通过pip安装mysqlclient时不断收到错误。 首先我试图安装mysqlclient时出现这个错误: Collecting mysqlclient Using cached mysqlclient-1.3.12.tar.gz Complete output from command python setup.py egg_info: /bin/sh: mysql_config: command not found Traceback (most recent call last): File "<string>", line 1, in <module> File "/private/var/folders/8d/xdwdnphs1w5b_vtxrc67__5h0000gn/T/pip-build-mejs2ys1/mysqlclient/setup.py", line 17, in <module> metadata, options = get_config() File "/private/var/folders/8d/xdwdnphs1w5b_vtxrc67__5h0000gn/T/pip-build-mejs2ys1/mysqlclient/setup_posix.py", line 44, in get_config libs = mysql_config("libs_r") File "/private/var/folders/8d/xdwdnphs1w5b_vtxrc67__5h0000gn/T/pip-build-mejs2ys1/mysqlclient/setup_posix.py", line 26, in mysql_config […]

django安装在ubuntu的runnung dockerfile失败

问候, 我跟着docker写了一个快速启动的例子https://docs.docker.com/compose/django/ ,在CentOS VM和Ubuntu VM中使用我的docker环境。 这个例子在CentOS中运行,但在Ubuntu中没有。 失败发生在 RUN pip install -r requirements.txt 错误是 Step 6/7 : RUN pip install -r requirements.txt —> Running in 7ed9830cea5f Collecting Django (from -r requirements.txt (line 1)) Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe12ff70470>: Failed to establish a new connection: [Errno -3] Temporary failure […]

如何可靠地保持与我的Python Flask API打开的SSH隧道和MySQL连接?

我在Flask中构build了一个API,用Keras对文本信息进行分类。 我目前使用sshtunnel和MySQLdb连接到MySQL数据库以从远程数据库获取消息。 整个应用程序被封装在一个Docker容器中。 我能够build立到远程数据库的连接并成功查询它,但是每当POST请求进入API时,我都会打开和closures一个新的ssh隧道,这会降低性能。 我试图打开一个单独的ssh隧道和数据库连接来“统治所有”,但是如果在一个小时左右之后没有任何活动,连接就会过时,然后API请求将永远耗费一天的时间来完成。 你是怎么做到的? 这是缓慢的不可避免的还是有办法定期刷新SSH和数据库连接? 这是我连接到我的数据库为每个传入的请求: with SSHTunnelForwarder( (host, 22), ssh_username=ssh_username, ssh_private_key=ssh_private_key, remote_bind_address=(localhost, 3306) ) as server: conn = db.connect(host=localhost, port=server.local_bind_port, user=user, passwd=password, db=database)

Python和Docker:以可编辑的方式将远程私有git存储库安装到容器中

我试图从requirements.txt中将基于私有python的git repos安装到docker容器中,以便在开发过程中可以很容易地进行编辑。 例如,我有一个Django项目,其中包含一个Dockerfile,允许在Docker容器中构build该项目。 (它可能看起来像这样https://github.com/JoeJasinski/docker-django-demo/blob/master/Dockerfile )。 现在,假设项目有一个如下所示的从一个私有仓库中提取代码的requirements.txt文件。 django=1.11.2 -e git+git@github.com:myorg/my-private-project.git#egg=my_private_project -e git+ssh://git@git.example.com/second-private-project@mytag#egg=second_private_project -e git+https://github.com/myorg/third-private-project#egg=third_private_project 理想情况下,我会这样做,所以我可以编辑我的主项目和依赖回购站,而无需每次都重新构buildDocker容器。 Dockerfile“ADD。dest /”命令可以对主项目进行编辑,但是我很难find安装这些私有存储库的好方法。 通常(在Docker之外),pip -e标志使得repos可以在适当位置进行编辑,这是非常好的,因为我可以像编辑其他repo一样编辑和提交它们。 但是,在Docker中,容器无法访问下载私有回购站所需的ssh私钥(这可能是一件好事,所以我们不会将密钥构build到Docker镜像中)。 我以为有一个想法就是在build造之前在集装箱外面下载私人仓库。 然后不知何故,这些回购将在构build时“添加”到Docker容器,然后单独添加到PYTHONPATH(也许在运行时?)。 但是,我觉得我过分复杂的情况。 任何关于一个好的,简单的(Pythonic)的方式来安装私人的基于Python的git仓库到一个容器的build议,以便在主项目和从属仓库上开发很容易?

是否有可能在SqlAlchemy中通过名称连接到dockerdb容器?

我有以下docker容器,这两个共享一个networking连接,并exec到api ,允许我ping db ,这一点是好的。 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8790d379ddb9 codeinsight/database "/run-database.sh" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp db 88b2022876cc codeinsight/rest-api "python /usr/src/a…" 3 minutes ago Up 3 minutes 3000/tcp, 0.0.0.0:3000->8989/tcp api 但是,当使用sqlalchemy连接到db (可能不是特定于框架!)时: self.engine = create_engine('mysql+pymysql://user_name:password@db:3306/dbname', echo=True) 除了连接拒绝,我什么也得不到 Can't connect to MySQL server on 'db' ([Errno 111] Connection refused 那么,在定义和build立链接时,是否可以通过容器名称进行连接? […]

如何通过docker run将本地文件作为parameter passing?

我有一个像这样的Dockerfile: FROM python:3.6 RUN mkdir /code COPY dist/python-0.1.0.tar.gz /code WORKDIR /code RUN pip install python-0.1.0.tar.gz ENTRYPOINT ["post"] “后”命令运行我的代码罚款没有参数。 我的问题是如何获得docker容器除了在运行时的本地文件,因为它可能会改变。 这里是我的命令,运行脚本,但是说没有这样的文件或目录data / output.xml docker run container data/output.xml 我也尝试过,没有运气 docker run -v data:/data containter /data/output.xml 感谢您的任何帮助!

运行MSSQL并在docker上运行脚本

我想运行MSSQL数据库,然后运行一个脚本,在其中创build一些表。 最后,我希望得到的容器是一个带有预先创build的数据库的SQL Server实例。 我目前的dockerfile: FROM microsoft/mssql-server-linux:2017-latest RUN apt-get update RUN apt-get -y install python3 python3-pip RUN mkdir -p /usr/src/app/ COPY requirements.txt /usr/src/app/requirements.txt RUN pip3 install -r /usr/src/app/requirements.txt COPY . /usr/src/app/ # ENTRYPOINT ./opt/mssql/bin/sqlservr CMD python3 /usr/src/app/apply_schema.py 问题是MSSQL不能以这种方式运行,只有python脚本运行(并且可预测的是无法连接到数据库)。 我怎么能先运行MSSQL,然后运行脚本?