Tag: docker compose

initdb:无法更改Postgresql容器上目录的权限

我是docker工作者生态系统的新手,我正在尝试使用一个yaml作曲文件来创build一个简单的postgres容器和一个卷,以便保存它的数据。 该文件如下所示: # Use postgres/example user/password credentials version: '3.3' services: db: image: postgres environment: POSTGRES_DB: recrow POSTGRES_USER: recrow POSTGRES_PASSWORD: recrow_db_1000 PGDATA: /var/lib/pgsql/data/pgdata volumes: – ./pgsql/data:/var/lib/pgsql/data/pgdata 但是,在调用docker-compose -f stack.yml up ,出现以下错误: 修复现有目录/ var / lib / postgresql / data / pgdata的权限… initdb:无法更改目录“/ var / lib / postgresql / data / pgdata”的权限:操作不允许 /var/lib/pgsql/data/pgdata应该是相对于容器根目录的目录,而./pgsql/data是主机上的path。 我从安装在/mnt/storage上的ntfs-3g分区运行容器。 可能是什么问题呢? 我也运行docker没有根权限,通过添加我的用户到docker组,这个用户也有完整的访问前面提到的挂载点/mnt/storage 。

如何将configuration导入到dockerfile。

我有一个docker-compose.yaml文件,然后是dockerfiles。 现在,我不想在此docker-compose / dockerfile中写入所有主机,端口,密码。 相反,我想保留所有这些configuration在一个不同的文件。 我知道,一半的需求可以通过使用.env文件来实现,在那里我可以保留我的环境variables,但是将所有configuration保存在一个单独的文件(main.cfg)中是很好的,这可以被其他组件。

docker – NGINX Proxy +让我们encryption

我从Docker开始。 在开始,我想在代理和SSL(只在我的机器上本地)在nginx上设置简单的服务器,所以我做这样的事情: version: '2' services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: – "80:80" – "443:443" volumes: – ./certs:/etc/nginx/certs:ro – /etc/nginx/vhost.d – /var/run/docker.sock:/tmp/docker.sock:ro – /usr/share/nginx/html labels: – com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true nginx-proxy-ssl: image: jrcs/letsencrypt-nginx-proxy-companion container_name: nginx-proxy-ssl volumes: – ./certs:/etc/nginx/certs:rw – /var/run/docker.sock:/var/run/docker.sock:ro volumes_from: – nginx-proxy whoami2: image: jwilder/whoami container_name: whoami2 environment: – VIRTUAL_HOST=vertex.local.com – LETSENCRYPT_HOST=vertex.local.com – LETSENCRYPT_EMAIL=contact@vertex.local.com networks: default: external: […]

使用docker文件执行shell脚本

我有一些tar文件,我想移动到泊坞窗图像,并在那里提取它们,然后运行python web应用程序脚本。 我有sh脚本来提取这些文件。 如果我使用RUN命令运行脚本,则它们会被解压缩,但它们不会出现在最终的容器中。 我也使用入口点,但它执行,然后closures容器不执行“主要Python脚本”。 有没有办法如何执行这个安装脚本,然后继续运行主脚本,而不是closures? Dockerfile # Use an official Python runtime as a parent image FROM python:2.7-slim RUN apt-get update \ && apt-get install -y curl \ && curl -sL https://deb.nodesource.com/setup_4.x | bash \ && apt-get install -y nodejs \ && apt-get install -y git \ && npm install -g bower \ && […]

docker化的Web服务在共同的nginx rproxy下编排:通过rproxy路由中间stream量

一个以nginx作为主机中央rproxy的docker容器占用端口80.它将每个基于域名的请求redirect到N个内部(django,flask)docker化服务,每个服务暴露8000或5000个。 每个服务都有一个相应的子域,用于parsing主机的(AWS EC2实例)公共IP。 这些条目位于注册商(domain.com)的DNS Alogging以及/etc/hosts的/etc/hosts中。 你将如何通过rproxy容器使内部服务相互通话而不需要拨打公共互联网? 例如,如果我监视来自主机的调用dns调用: sudo tcpdump -vvv -s 0 -l -n port 53 如果我向主持人提出要求: curl a.mydomain.com 没有传出调用,但是如果我从一个容器的shell发出相同的请求,那么我在tcpdump控制台中得到结果: 15:16:43.115879 IP (tos 0x0, ttl 255, id 50739, offset 0, flags [none], proto UDP (17), length 81) 172.31.0.2.53 > 172.31.21.245.35952: [udp sum ok] 28855 q: A? a.mydomain.com. 1/0/0 a.mydomain.com. [1m] A <public-IP-here> (53) 我的主机的/etc/resolv.conf文件: nameserver […]

定期在Docker Compose中使用cron备份Postgres数据库

我想定期备份一个Postgres数据库。 我使用的是Docker Compose,下面是Postgres容器的代码片段: postgres: build: ./compose/postgres volumes: – postgres_data:/var/lib/postgresql/data – postgres_backup:/backups 和Postgres dockerfile: FROM postgres:9.6 # add backup scripts ADD backup.sh /usr/local/bin/backup ADD restore.sh /usr/local/bin/restore ADD list-backups.sh /usr/local/bin/list-backups # make them executable RUN chmod +x /usr/local/bin/restore RUN chmod +x /usr/local/bin/list-backups RUN chmod +x /usr/local/bin/backup 我想添加一个cron任务(比如说backup-cron ), 每天在午夜运行backup.sh 。 我已阅读本教程,但我不知道如何正确整合它。 任何帮助?

定义在容器启动后在docker-compose.yml中运行几个脚本

如果我想要在节点容器启动后执行几个node.js脚本,我必须修改入口点sh脚本。 哪种迫使我build立我自己的形象。 但是,如果我只想设置一个使用官方映像的组合文件,并在启动后运行启动这些脚本。 你会怎么做?

docker-compose执行命令在主要服务依靠其他服务

在我的项目中,我有一个具有nodejs图像的nodejs 。 在docker-compose.yml文件中,我有两个服务:从Dockerfile构build的server和使用postgres图像的db 。 Dockerfile获取图像,为项目创build一个目录,运行npm install并设置CMD ["npm", "start"] 。 我docker-compose.yml的内容: version: "2" services: server: build: . ports: – "5000:5000" volumes: – ./:/usr/src/app links: – db db: image: postgres:9.6.2 ports: – "5432:5432" volumes: – db_data:/var/lib/postgres restart: always environment: POSTGRES_PASSWORD: devel POSTGRES_USER: devel POSTGRES_DB: devel volumes: db_data: 在我的项目中,我正在使用db-migrate和db-migrate-pg驱动程序,当我尝试执行迁移时,出现下一个错误:7 [ERROR] Error: connect ECONNREFUSED 127.0.0.1:5432 at Object.exports._errnoException (util.js:1026:11) at […]

在一个步骤中用VSCode在Docker容器中debuggingNodeJs程序

我试图设置我的VSCode环境,所以我可以通过点击F5在一个步骤中debugging我的dockerized node.js程序。 目前我的设置如下: .vscode / launch.json: { "version": "0.1.0", "configurations": [ { "name": "Attach", "type": "node", "protocol":"inspector", "request": "attach", "port": 5858, "restart": false, "sourceMaps": false, "localRoot": "${workspaceRoot}/", "remoteRoot": "/usr/local/src/my-app" } ] } 泊坞窗,compose.debug.yml: version: "3" services: app: build: . ports: – "3000:3000" – "5858:5858" entrypoint: node –inspect-brk=0.0.0.0:5858 app/entry.js networks: – appnet networks: appnet: 现在,当我执行docker-compose -f […]

Docker组合Rails + Oracle数据库

我正在尝试创build一个docker-compose文件,它将启动一个Rails 3.2.13服务器并将其链接到Oracle数据库。 到目前为止,我一直无法从Rails连接到Oracle数据库。 这是来自Rails的错误 oci8.c:513:in oci8lib_191.so: ORA-12154: TNS:could not resolve the connect identifier specified (OCIError) 泊坞窗,compose.yml version: '3.1' services: app: image: local-rails:0.0.1 build: . ports: – "3000:3000" volumes: – "${PWD}:/usr/src/app" depends_on: – db command: bundle exec rails s -p 3000 -b '0.0.0.0' db: image: wnameless/oracle-xe-11g environment: – ORACLE_ALLOW_REMOTE=true ports: – "49160:22" – "49161:1521" 我的Dockerfile中的variables ENV […]