如何在dockerfile的后台运行命令?

灯瓶

我有以下 dockerfile(已省略):

    FROM postgres:latest
  1 ARG VERSION
  2
  3 # install clojure
  4 RUN apt-get update
  5 RUN apt-get -y install curl
  6 RUN curl -O https://download.clojure.org/install/linux-install-1.10.3.933.sh
  7 RUN chmod +x linux-install-1.10.3.933.sh
  8 RUN ./linux-install-1.10.3.933.sh
  9
 10 # postgres
 11 RUN apt-get -y install sudo
 12 USER postgres
 13 RUN initdb
 14 RUN postgres -D /var/lib/postgresql/data
 15
 16 RUN psql -f bin/sql/postgres-db.sql -U postgres
 17 RUN psql -f bin/sql/postgres-table.sql -U postgres -d datomic
 18 RUN psql -f bin/sql/postgres-user.sql -U postgres -d datomic

但是在第 14 行运行命令后,docker 容器停止执行其余命令,这些命令应该在 postgres -D 命令处于活动状态时手动在另一个 shell 中运行。如何在后台运行 postgres 命令?

我尝试 & 在第 14 行的末尾在后台发送它,但得到这个:

[+] Building 4.4s (14/25)
 => [internal] load build definition from Dockerfile_db                    0.0s
 => => transferring dockerfile: 1.29kB                                     0.0s
 => [internal] load .dockerignore                                          0.0s
 => => transferring context: 2B                                            0.0s
 => [internal] load metadata for docker.io/library/postgres:latest         3.7s
 => [internal] load build context                                          0.0s
 => => transferring context: 175B                                          0.0s
 => [ 1/21] FROM docker.io/library/postgres:latest@sha256:6647385dd9ae11a  0.0s
 => CACHED [ 2/21] RUN apt-get update                                      0.0s
 => CACHED [ 3/21] RUN apt-get -y install curl                             0.0s
 => CACHED [ 4/21] RUN curl -O https://download.clojure.org/install/linux  0.0s
 => CACHED [ 5/21] RUN chmod +x linux-install-1.10.3.933.sh                0.0s
 => CACHED [ 6/21] RUN ./linux-install-1.10.3.933.sh                       0.0s
 => CACHED [ 7/21] RUN apt-get -y install sudo                             0.0s
 => CACHED [ 8/21] RUN initdb                                              0.0s
 => [ 9/21] RUN postgres -D /var/lib/postgresql/data &                     0.3s
 => ERROR [10/21] RUN psql -f bin/sql/postgres-db.sql -U postgres          0.4s
------
 > [10/21] RUN psql -f bin/sql/postgres-db.sql -U postgres:
#13 0.367 psql: error: could not connect to server: No such file or directory
#13 0.367   Is the server running locally and accepting
#13 0.367   connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
------
executor failed running [/bin/sh -c psql -f bin/sql/postgres-db.sql -U postgres]: exit code: 2
最大限度

来自Postgres DockerHub 页面部分初始化脚本

如果您想在从该镜像派生的镜像中进行额外的初始化,请在 /docker-entrypoint-initdb.d 下添加一个或多个 *.sql、*.sql.gz 或 *.sh 脚本(如有必要,创建目录)。在入口点调用 initdb 创建默认的 postgres 用户和数据库后,它将运行任何 *.sql 文件,运行任何可执行的 *.sh 脚本,并在该目录中找到任何不可执行的 *.sh 脚本以在此之前进行进一步的初始化启动服务。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在后台延迟运行命令?

如何在Dockerfile中运行读取命令?

如何在队列中和后台运行异步命令?

如何在bash中单行运行多个后台命令?

如何在后台运行命令而没有输出?

如何在后台运行Gedit和Subl命令?

如何在 Windows GitHub Action 的后台运行命令

PHP如何在后台运行多bash命令

如何在后台运行需要输入密码的sudo命令?

如何在Dockerfile上运行两个命令?

Dockerfile:如何在CP中运行子命令?

如何始终在后台运行命令?

如何在一行中同时运行多个命令,在后台同时运行一些命令?

如何在Power Shell中将Maven命令作为后台进程运行

如何在win10中创建用于在后台而不是前台运行命令的热键?

如何在后台一起运行多个命令?

除非出现错误,如何在没有输出的情况下在后台运行命令

如何在前台运行命令然后发送到后台

如何在后台捕获通过docker-compose exec -d运行的命令的日志?

如何在后台一个接一个地运行命令?

我如何在后台运行脚本、命令并杀死请求?

如何在Symfony应用程序中像后台任务一样运行命令?

如何在没有&符号的情况下在后台运行命令?

如何在Elastic Beanstalk上从Dockerfile.aws.json运行命令?

使用官方 Nextcloud Docker 映像,如何在 Dockerfile 中将 occ 命令作为 www-data 运行?

在后台运行命令

如何在后台运行slurm?

navGraph viewModel如何在后台运行?

querySelector如何在后台运行?