docker - 从docker-compose v.3文件启动docker命令

标签 docker docker-compose

我正在学习Docker,并且正在第一步。

我必须从构成文件中“刷新” postgres图像以初始化数据库脚本,就像这里的YOSIFKIT通过 shell (https://github.com/docker-library/postgres/issues/193)一样。

这是我的Docker文件:

FROM postgres:9.6.7

COPY docker-postgresql-9.6.7/prova.sql /docker-entrypoint-initdb.d/

这是我的撰写文件:
version: '3'
services:
  postgresql_rdbms:
    restart: always
    image: postgres-prova
    build:
      context: ../
      dockerfile: docker-postgresql-9.6.7/Dockerfile
    command: bash -c "docker run -it --rm postgres-prova ls -ln /docker-entrypoint-initdb.d && docker run -it --rm postgres-prova && postgres"
    environment:
      PG_PASSWORD: postgres
    ports:
      - "5432:5432"
    volumes:
      - /srv/docker/postgresql:/var/lib/postgresql

我如何在撰写文件中插入命令以执行“docker run -it --rm imageToReload”?
因为我已经看到了compose文件中的“命令:”在容器内部起作用,但是我想在更高级别上对容器进行操作(=在容器创建之后从compose文件中管理容器)

非常感谢你

最佳答案

据我了解,您希望docker-compose在每次运行后删除/删除容器,以便每次运行构建时都可以在每次启动服务时将新的prova.sql文件复制到镜像中。 --force-recreate flag可能是您需要的。

yaml文件中的command指令提供了在容器内运行的命令。

关于docker - 从docker-compose v.3文件启动docker命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48745271/

相关文章:

Docker 中的 Cassandra

node.js - 域在主机上解析,但不在 docker 容器内解析

docker - 无法在我的容器中安装解压缩工具

docker - 在 Kubernetes 上启动 Spark 3.0 -- 拉取镜像时出错

azure - Azure Docker 中没有默认网络

docker - 如何使用 docker-compose 创建持久化容器

docker - 在 docker-compose 中执行 wait-forit 脚本的正确方法

docker - 我必须使用私有(private) Docker 注册表来保持我的源私有(private)吗?

docker - 如何将主机 IP 地址传递给 Docker Compose 文件?

docker - 如何仅在另一个事件镜像完成任务后才运行docker镜像?