Tag: python

将在Docker群集中运行的Python应用程序生成的数据保存在Mysql数据库中

我想在两个树莓派上运行Docker中使用Swarm的Python应用程序的多个实例。 该应用程序与Mysql数据库进行通信。 我想保存从副本生成的所有数据在一个共同的数据库,但我不明白什么是最好的办法做到这一点。 我是否也应该为数据库使用docker,还是应该尝试使用保存在一台主机上的数据库? 任何build议将非常感激!

Neo4J与Py2neo:未经授权的错误HTTPS

我有Neo4J运行在一个Docker容器中,其中我已经将内部容器端口7473和7687映射到它们各自的主机端口7473和7687,7474是暴露的但未映射。 关于networking的Neo4J服务器configuration。 # Bolt connector dbms.connector.bolt.enabled=true #dbms.connector.bolt.tls_level=OPTIONAL dbms.connector.bolt.listen_address=0.0.0.0:7687 # HTTP Connector. There must be exactly one HTTP connector. dbms.connector.http.enabled=true dbms.connector.http.listen_address=0.0.0.0:7474 # HTTPS Connector. There can be zero or one HTTPS connectors. dbms.connector.https.enabled=true dbms.connector.https.listen_address=0.0.0.0:7473 我能够通过浏览器login到Neo4J的web客户端,并更改默认密码。 关于Python代码,我在这里创build客户端。 self.client = py2neo.Graph(host =ip_address, username=username, password=password, secure =use_secure, bolt =use_bolt) 只要我执行这样的查询。 node = Node("FooBar", foo="bar") self.client.create(node) 我得到以下未经授权的例外。 py2neo.database.status.Unauthorized: https://localhost:7473/db/data/ 任何想法为什么这可能会发生?

如何在具有多个Docker容器的设置中备份MongoDB?

我有一个应用程序被拆分成多个Docker容器: 容器1包含一个MongoDB数据库 容器2包含一个python脚本,每天执行一些操作,并使用pymongo将结果存储在容器1的MongoDB中。 以前使用Docker,即在同一台机器上安装MongoDB和python应用程序,我可以在日常脚本完成后立即使用mongoexport来备份数据库。 但是,在Docker设置中,我无法在Container 2中使用mongoexport,因为未安装MongoDB,即命令未知。 从我的angular度来看,唯一的select是使用容器1中的cronjob运行脚本,该脚本在预设时间执行备份。 但是,我更喜欢容器2触发备份的解决scheme,因为每日脚本的运行时间可能有很大差异。 在此先感谢您的任何build议!

部署Debian-python混合应用程序的更好方法

我为Debian linux编写了一个小程序,它调用python2.7来执行几乎所有的function。 Python函数包括远程数据库访问,所以应用程序将依赖于默认情况下不在每个Linux发行版中的python模块。 应用程序打包在一个dpkg文件中,以便在许多其他机器上(使用相同的Linux发行版)使用dpkg -i MyApp01 。 但是为了使应用程序正常工作,必须单独安装python依赖项:例如pip install mysql-connector-python-rf 现在我想使用Docker来发布我的依赖和应用程序,并使其在其他机器上工作,而不必像上面那样安装它们。 可以使用Docker来做到这一点? 如果不是,有没有更好的方法来本地捆绑dpkg文件中的python依赖关系(假设目标机器具有相似的环境)?

在多个端口上创builddocker的副本

我正在试图做的 – 在芹菜我的问题在docker工运行气stream – 我的芹菜工人在容器中,我不知道如何扩大他们 我的docker-comopose文件: version: '2' services: mysql: image: mysql:latest restart: always ports: – "3306:3306" environment: – MYSQL_RANDOM_ROOT_PASSWORD=true – MYSQL_USER=airflow – MYSQL_PASSWORD=airflow – MYSQL_DATABASE=airflow volumes: – mysql:/var/lib/mysql rabbitmq: image: rabbitmq:3-management restart: always ports: – "15672:15672" – "5672:5672" – "15671:15671" environment: – RABBITMQ_DEFAULT_USER=airflow – RABBITMQ_DEFAULT_PASS=airflow – RABBITMQ_DEFAULT_VHOST=airflow volumes: – rabbitmq:/var/lib/rabbitmq webserver: image: airflow:ver5 restart: […]

无法从另一个容器到Docker容器中运行Flask API

我很感激关于Flask和Docker的许多问题,还有更多关于如何在Docker容器中运行简单Flask API的博客文章。 然而,我有一些麻烦到达一个容器中运行的Flask API,我从另一个容器中设置了主机( 0.0.0.0 )和端口( 5000 )。 有趣的是,如果我启动托pipeAPI的容器,我可以从本地浏览器访问API。 我想要实现的是首先启动一个托pipePostgres数据库的容器,然后托pipe一个Flask API(它使用Postgres作为后端,最后启动一个容器,运行一些针对数据库和API的unit testing。 这是docker-compose.yml文件: version: "3" services: app: build: context: ../ dockerfile: docker/app.Dockerfile ports: – "5000:5000" depends_on: – db networks: – todo_backend tests: build: context: ../ dockerfile: docker/tests.Dockerfile ports: – "80:8000" depends_on: – db – app networks: – todo_backend db: image: postgres:9.5 restart: on-failure environment: POSTGRES_PASSWORD: […]

docker如何处理文件创build?

我的代码将mongo集合转储到本地文件夹,然后上传到s3存储桶 cmd = "mongoexport " \ "–host " + url + \ " –port " + str(port) + \ " –username " + user + \ " –password " + password + \ " –db " + db_name + \ " –collection " temp = cmd + name + " –out dump/" + name + […]

如何在docker上运行gunicorn

当docker启动时,我有两个依赖于彼此的文件。 1是一个烧瓶文件,一个是具有几个function的文件。 当docker启动时,只有函数文件会被执行,但是它会从flask文件中导入烧瓶variables。 例: Flaskfile import flask from flask import Flask, request import json _flask = Flask(__name__) @_flask.route('/', methods = ['POST']) def flask_main(): s = str(request.form['abc']) ind = global_fn_main(param1,param2,param3) return ind def run(fn_main): global global_fn_main global_fn_main = fn_main _flask.run(debug = False, port = 8080, host = '0.0.0.0', threaded = True) 主文件 import flaskfile #a few […]

Docker中的Web Socket握手错误

我使用Python 3.5 , Flask和Meinheld Web套接字中间件来提供套接字。 这里是服务器端代码示例: @app.route('/chat') def chat(): ws = request.environ.get('wsgi.websocket') while True: m = ws.wait() if m is None: break ws.send(m) return "" 客户端代码示例: var s = new WebSocket("ws://localhost:4567/chat"); 然而,一切工作正常,而我在本地模式下运行,但是当我将此添加到docker容器中,我总是得到像这样的错误: WebSocket连接到'ws:// localhost:4567 / chat'失败:WebSocket握手期间出错:意外的响应代码:500 docker容器在远程服务器或本地环境中的运行位置并不重要,错误总是相同的。 所有必要的端口都被暴露。

docker工人应用程序无法看到Redis服务器

我正在尝试使用docker来安装3个应用程序。 其中一个是烧瓶网站的应用程序,另一个是Redis服务器,另一个是芹菜应用程序,将通过redis与烧瓶通信。 现在前2似乎没有任何问题,但对于烧瓶的应用程序,我得到这个错误: celery_1以代码1退出 我的docker-compose.yml文件如下所示: version: '2' services: redis: image: "redis:alpine" web: build: . ports: – "7998:7998" command: "gunicorn -b 0.0.0.0:7998 –log-level TRACE common_apps:app" celery: build: . command: "celery -A common_apps.celery_app worker" 如果我切出芹菜部分并单独启动,我得到的错误消息是无法findredis主机(但这可能是因为主机名redis只存在于docker-compose上下文中) 有什么想法破坏在这里? 非常感谢