首页 > 解决方案 > 如何在 docker-compose.yml 中运行多个 shell 脚本

问题描述

docker-compose.yml看起来像这样

version: '3.8'

services:

  database:
    image: "postgres:10.16"
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=pg_database
    volumes:
      - database-data:/var/lib/postgresql/data/
    ports:
      - "35432:5432"

  api:
    build: ../../api
    environment:
      - POSTGRES_PASSWORD=password
      - POSTGRES_USER=user
      - POSTGRES_DB=pg_database
      - POSTGRES_HOST=database
      - POSTGRES_PORT=35432
    ports:
      - "3030:3030"
    depends_on:
      - "database"

  migrations:
    image: "node:14.17.5-alpine3.14"
    volumes:
      - "../migrations/scripts:/tmp"
      - "../../api:/tmp/api"
    links:
      - database
    command: "sh /tmp/migration_test.sh postgresql://user:password@host.docker.internal:35432/pg_database"
    depends_on:
      - "api"
      - "database"

volumes:
  database-data:

如果我在migration服务中运行一个 shell 脚本,这将有效。但是,我希望能够运行 2 个 shell 脚本。一个接一个。不是同时。像这样的东西

  migrations:
    image: "node:14.17.5-alpine3.14"
    volumes:
      - "../migrations/scripts:/tmp"
      - "../../api:/tmp/api"
    links:
      - database
    command: >
      "sh /tmp/migration_test.sh postgresql://user:password@host.docker.internal:35432/pg_database" &&
      "sh /tmp/migration_test2.sh postgresql://user:password@host.docker.internal:35432/pg_database"
    depends_on:
      - "api"
      - "database"

我没有得到正确的语法来让它工作。我尝试了不同的方法,但无法弄清楚。有没有人有什么建议?是否可以一个接一个地运行两个 shell 脚本?

标签: dockerdocker-composedevops

解决方案


推荐阅读