Postgresql 如何将带有Ansible的转储导入docker容器内的postgres

Postgresql 如何将带有Ansible的转储导入docker容器内的postgres,postgresql,docker,docker-compose,ansible,Postgresql,Docker,Docker Compose,Ansible,我想将转储导入Postgres docker contaner。以下是我的任务定义: - name: Import DB shell: > cat /tmp/db.backup | docker-compose exec -T postgres \ psql --username my_user args: chdir: "{{ working_directory }}" 这是你的电话号码 fatal: [staging_host]: FAILED

我想将转储导入Postgres docker contaner。以下是我的任务定义:

- name: Import DB
  shell: >
    cat /tmp/db.backup |
    docker-compose exec -T postgres \
    psql --username my_user
  args:
    chdir: "{{ working_directory }}"
这是你的电话号码

fatal: [staging_host]: FAILED! => {"changed": true, "cmd": "cat /tmp/db.backup | docker-compose exec -T postgres psql --username my_user", "delta": "0:00:00.392214", "end": "2019-03-26 15:26:07.443355", "msg": "non-zero return code", "rc": 1, "start": "2019-03-26 15:26:07.051141", "stderr": "psql: could not connect to server: No such file or directory\n\tIs the server running locally and accepting\n\tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5432\"?\nread unix @->/var/run/docker.sock: read: connection reset by peer", "stderr_lines": ["psql: could not connect to server: No such file or directory", "\tIs the server running locally and accepting", "\tconnections on Unix domain socket \"/var/run/postgresql/.s.PGSQL.5432\"?", "read unix @->/var/run/docker.sock: read: connection reset by peer"], "stdout": "", "stdout_lines": []}
如果我在“cmd”中手动运行命令,则没有问题:

cat /tmp/db.backup | docker-compose exec -T postgres psql --username my_user
我希望尽可能减少依赖项,因为我不想使用

删除延续行“\”。由“>”引入的新行将替换为中的空格

删除续行“\”。由“>”引入的新行将替换为中的空格


解决方案是创建一个新的临时容器,装入要导入和覆盖命令的文件:

- name: Import DB
  shell: >
    docker-compose run -T --rm -v /tmp/db.backup:/tmp/db.backup postgres \
    psql --host postgres --username postgres < /tmp/db.backup
  args:
    chdir: "{{ working_directory }}"
-名称:导入数据库
外壳:>
docker compose run-T--rm-v/tmp/db.backup:/tmp/db.backup postgres\
psql——主机postgres——用户名postgres
解决方案是创建一个新的临时容器,装入要导入和覆盖命令的文件:

- name: Import DB
  shell: >
    docker-compose run -T --rm -v /tmp/db.backup:/tmp/db.backup postgres \
    psql --host postgres --username postgres < /tmp/db.backup
  args:
    chdir: "{{ working_directory }}"
-名称:导入数据库
外壳:>
docker compose run-T--rm-v/tmp/db.backup:/tmp/db.backup postgres\
psql——主机postgres——用户名postgres