Tag: docker compose

如何通过容器内的cron转储数据库?

我使用docker-compose堆栈。 相对编码: db: build: ./dockerfiles/postgres container_name: postgres-container volumes: – ./dockerfiles/postgres/pgdata:/var/lib/postgresql/data – ./dockerfiles/postgres/backups:/pg_backups Dockerfile for Postgres: FROM postgres:latest RUN mkdir /pg_backups && > /etc/cron.d/pg_backup-cron && echo "00 22 * * * /backup.sh" >> /etc/cron.d/pg_backup-cron ADD ./backup.sh / RUN chmod +x /backup.sh backup.sh #!/bin/sh # Dump DBs now=$(date +"%d-%m-%Y_%H-%M") pg_dump -h db -U postgres -d postgres > […]

将自签名证书导入Docker的JRE cacert不被服务识别

一个Java服务在Docker容器中运行,它访问外部HTTPS URL,并且其自签名证书对于服务/ JRE cacert密钥库不可用,因此连接失败。 因此,将HTTPS外部URL的自签名证书导入到Docker容器的JRE cacert密钥库中。 (在检查$ JAVA_HOME env。variables之后) 重新启动Docker容器(使用“docker restart”命令),希望服务也重启,并从JRE cacert中select更改。 但是这并没有发生,Java服务仍然无法访问外部的HTTPS URL。 任何想法如何运行在Docker容器内的Java服务select新的证书导入JRE cacert更改?

Docker中的Symfony应用程序不起作用

我使用MongoDB在Symfony中创build了一个应用程序,并在Docker镜像中添加了这个应用程序。 MongoDB的图像适用于消息: 2017-04-19T12:47:33.936+0000 I NETWORK [initandlisten] waiting for connections on port 27017 但是,应用程序的图像不工作我收到的消息: stdin: is not a tty hello 当我调用指令时: docker run docker_web_server:latest 我用这个docker-compose文件: web_server: build: web_server/ ports: – 5000:5000 links: – mongo tty: true environment: SYMFONY__MONGO_ADDRESS: mongo SYMFONY__MONGO_PORT: 27017 mongo: image: mongo:3.0 container_name: mongo command: mongod –smallfiles expose: – 27017 和Dockerfile的应用程序是: FROM ubuntu:14.04 ENV […]

Docker – 安装一个不像常规安装的卷

我是新来的docker所以我确定我做错了什么。 我not a php developer但这不应该在这种情况下。 我正在使用/var/www/html目录下的数据的drupal docker镜像。 我试图用主机系统上的本地目录中的drupal站点覆盖这些数据。 根据文件,这是预期的行为 将主机目录挂载为数据卷 除了使用-v标志创build卷之外,还可以将Docker引擎主机的目录挂载到容器中。 $ docker run -d -P –name web -v / src / webapp:/ webapp training / webapp python app.py 该命令将主机目录/ src / webapp安装到/ webapp的容器中。 如果path/ web应用程序已经存在于容器的映像中,那么/ src / webapp挂载会覆盖,但不会删除预先存在的内容。 一旦挂载被删除,内容可以再次访问。 这与mount命令的预期行为一致。 但是,我发现本地drupal站点文件不存在于容器上。 我的完整工作stream程如下: docker-compose.yml drupal: container_name: empower_drupal build: ./build/drupal-local-codebase ports: – "8888:80" – "8022:22" – […]

在docker-compose中的容器入口点之后运行脚本

我有一个postgres:9.5.6高山容器,另一个容器,名为web,必须链接到它。 我想在postgres容器中运行一个名为create_db.sh的脚本,并且已经执行了docker-entrypoint.sh,以便创build一个db和一个用户并且还原一个备份。 我docker-compose.yml (postgres部分): postgres: build: ./postgres container_name: postgres volumes: – /shared_folder/postgresql:/var/lib/postgresql ports: – "5432:5432" command: sh /home/create_db.sh create_db.sh的内容是: #!/bin/sh psql -d template1 -U postgres psql –command "CREATE USER user WITH PASSWORD 'userpassword';" psql –command "CREATE DATABASE userdb;" psql –command "GRANT ALL PRIVILEGES ON DATABASE userdb to user;" psql —-command “\q;” psql -U user -d […]

docker安装卷与权限被拒绝

我正在尝试设置一个从主机挂载卷的docker容器。 无论我尝试什么,它总是说远程进入docker集装箱时被拒绝。 这是我尝试添加到我的泊坞窗文件中的一些命令: RUN su -c "setenforce 0" 和 chcon -Rt svirt_sandbox_file_t /app 当我远程进入我的容器时,仍然出现以下错误: 错误:EACCES:权限被拒绝,scandir'/ app'处于错误(本机) 错误:EACCES:权限被拒绝,在错误(本地)时打开“npm-debug.log.578996924” 正如你所看到的,app目录被分配给一些使用uid 1000的用户: 这是我的docker文件: FROM php:5.6-fpm # Install modules RUN apt-get update && apt-get install -y \ git \ unzip \ libmcrypt-dev \ libicu-dev \ mysql-client \ freetds-dev \ libxml2-dev RUN apt-get install -y freetds-dev php5-sybase # This symlink […]

在Docker Compose多容器应用程序中,如何防止Postgres运行以前发布的语句

我正在运行一个Scrapy项目,其中有一个将数据写入PostgreSQL数据库的Item Pipeline。 这是一个Docker Compose多容器应用程序,具有以下docker-compose.yml : version: '3' services: privoxy: build: ./privoxy links: – tor tor: build: context: ./tor args: password: "foo" scraper: build: ./scraper environment: – http_proxy=http://privoxy:8118 – PGPASSWORD=iperpassword links: – tor – privoxy – db volumes: – scraper-data:/scraper/apkmirror_scraper/data – scraper-jobdir:/scraper/apkmirror_scraper/crawls db: image: postgres environment: – POSTGRES_PASSWORD=iperpassword volumes: – db-data:/var/lib/postgresql/data volumes: scraper-data: scraper-jobdir: db-data: 我正在使用官方存储库( […]

如何从外部回购使用docker-compose和maven snaphot依赖关系

我有几个Java组件(WAR),他们都暴露Web服务,他们碰巧使用相同的消息对象(DTOs)。 这些组件都与DTO共享一个通用的Maven依赖项,我们称之为“messaging-dtos.jar”。 这个常见的依赖项有一个版本号,例如messaging-dtos-1.2.3.jar,其中1.2.3是该工件的maven版本,该工具发布在nexus库等文件中。 在maven的世界里,docker放在一边,使用封闭的版本依赖关系可能会非常繁琐。 解决scheme是maven SNAPSHOTS。 例如,当您使用Eclipse IDE,并将依赖项设置为SNAPSHOT版本时,这将导致IDE从当前工作空间取代版本,从而节省时间,而不必在每次创build一个小型文件时closures某个版本更改。 现在,我不知道如何让这个开发周期与docker和docker-compose一起工作。 我有“Component A”,它存在于自己的git仓库中,而messaging-dtos.jar存在于另一个git仓库中,并且以nexus的forms发布。 我的Dockerfile simpy在某个时候执行了一个RUN mvn clean install ,为这个依赖项(我们使用Dockerfiles进行实际的部署,但是对于我们使用docker-compose的本地环境)提供了closures的版本。 这适用于封闭的版本,但不适用于SNAPSHOTS(至less不适用于本地SNAPSHOT,我可以在联机中发布SNAPSHOT,但是创build了另一组问题,用不同的内容覆盖相同的SNAPSHOT等,在那里,我想不要回来)。 我一直在考虑在某些时候使用docker-compose卷,也许是为了装载我的本地.m2文件,所以ComponentA可以在构build时find快照依赖项,但是这并不足够“干净”,构build会部分取决于Dockerfile中指定的任何内容,部分取决于本地构build的东西。 我不确定这是否是正确的方法。 有任何想法吗? 谢谢!

带有env的Docker命令var prepended(local env var)

我使用Docker Compose来启动一些容器,但是我没有得到command工作。 我想开始我的Flask服务器,但也为它设置一个env var。 以下是我所做的: web: command: INSTASONG_ENV=production python manage.py runserver 不幸的是,我得到这个错误: Cannot start container 2a413b1270b9faa5e0ffb8a70603ae25c48ff742e0d8476bed8153febcee185a: [8] System error: exec: "INSTASONG_ENV=production": executable file not found in $PATH 我怎样才能做这个工作?

docker中localhost和postgres之间的区别

我正在开发一个Django的应用程序,并试图在Docker中运行它。 我有一个我目前无法理解的问题。 当使用docker-compose运行应用程序时,当我使用这些configuration时,似乎web应用程序无法连接到数据库: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'my_db', 'USER': 'my_user', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '5432', } 但是一旦我把主机改为postgres ,它就可以工作。 喜欢这个 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'my_db', 'USER': 'my_user', 'PASSWORD': '', 'HOST': 'postgres', 'PORT': '5432', } postgres和localhost什么区别? 一个是运行没有和docker中的问题,而不是在我的mac中的开发环境,另一个是相反的。 # docker-compose.yml version: '3' services: db: image: postgres expose: – "5432" […]