簡體   English   中英

docker-compose:在pgsql容器上運行命令

[英]docker-compose: run a command on a pgsql container

我正在嘗試運行以下docker-compose文件:

version: "3"
services:
  db:
    image: postgres
    container_name: pgsql
    environment:
      - foo=foo
      - bar=bar
    volumes:
      - ./sql/:/opt/sql
    command: bash /opt/sql/create-db.sql
#    command: ps -aux
  web:
    image: benit/debian-web
    container_name: web
    depends_on:
      - db
    ports:
      - 80:80
    volumes:
      - ./html:/var/www/html

我在該行遇到錯誤:

command: bash /opt/sql/create-db.sql

這是因為pgsql服務沒有啟動。 可以使用以下command: ps -aux監視它command: ps -aux

pgsql服務啟動后,如何運行腳本?

您可以使用卷來提供初始化sql腳本:

version: "3"
services:
  db:
    image: postgres
    container_name: pgsql
    environment:
      - foo=foo
      - bar=bar
    volumes:
      - ./sql/:/opt/sql
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
  web:
    image: benit/debian-web
    container_name: web
    depends_on:
      - db
    ports:
      - 80:80
    volumes:
      - ./html:/var/www/html

這將起作用,因為原始Posgresql dockerfile包含一個腳本(在Posrgres啟動后運行),該腳本將執行/docker-entrypoint-initdb.d/文件夾中的所有*.sql文件。

通過在該位置掛載本地卷,您的sql文件將在正確的時間運行。

該圖像的文檔中實際上提到了它: How to extend this image部分下的https://hub.docker.com/_/postgres

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM