标签: docker-entrypoint

虽然在PATH(和可执行文件)中未找到Docker入口点

我正在使用以下内容创建一个简单的图像 Dockerfile

FROM docker:latest

COPY docker-entrypoint.sh /usr/local/bin

ENTRYPOINT ['docker-entrypoint.sh']
Run Code Online (Sandbox Code Playgroud)

在我的容器内:

/ # ls -al $(which docker-entrypoint.sh)
-rwxrwxr--    1 root     root           476 Jul 26 07:30 /usr/local/bin/docker-entrypoint.sh
Run Code Online (Sandbox Code Playgroud)

所以入口点文件PATH 可执行文件;

但是跑步时

docker run -v /var/run/docker.sock:/var/run/docker.sock -it imageinit
/bin/sh: [docker-entrypoint.sh]: not found
Run Code Online (Sandbox Code Playgroud)

我知道这个SO问题,但这是关于PATH和文件权限的问题(已经解决);

docker docker-entrypoint

2
推荐指数
1
解决办法
1962
查看次数

Dockerfile 的入口点仅来自基础映像

我有一个非常简单的 Dockerfile,如下所示:-

FROM my-base-image
COPY abc.properties /opt/conf/
Run Code Online (Sandbox Code Playgroud)

现在我的基本图像有一个 docker 入口点(在它的 Dockerfile 的末尾),但是你可以看到这个结果图像没有。这是否有效,或者我们是否需要在任何给定的 Dockerfile 中有一个 docker 入口点/CMD。还有结果图像中 COPY 指令的执行顺序是什么。我的意思是因为这个 Dockerfile 没有入口点,它会从基础镜像执行一个,但是会在 COPY 指令之后执行还是首先执行基础镜像入口点,然后在容器启动时执行这个 COPY 指令只是寻找概念在码头。

docker dockerfile docker-entrypoint

2
推荐指数
1
解决办法
1490
查看次数

Docker-compose 入口点脚本通过 exit 0 停止容器

执行入口点脚本后,容器以 Exit 0 停止。启动 Web 服务器的 compose 文件中指定的命令将被忽略。

我们使用 docker 和 docker-compose 作为 Rails 应用程序的环境。

入口点脚本:

#! /bin/bash
bundle exec rails assets:clobber
bundle exec rails assets:precompile

bundle exec rake db:exists && bundle exec rake db:migrate || bundle exec rake db:setup

rm -rf /aps/tmp/pids/server.pid

Run Code Online (Sandbox Code Playgroud)

撰写文件:

version: '2'
services:
  app:
    image: registry.gitlab.com/.../.../master:latest
    command: bundle exec rails server
    entrypoint: /aps/rails-entrypoint.sh
    volumes:
      - /srv/app/log/:/app/log
      - /srv/app/public/:/app/public
    env_file: .env
    ports:
      - '0.0.0.0:3333:3000'
    links:
      - apppostgres

  apppostgres:
    image: postgres
    ...


volumes:
  pgdata:
Run Code Online (Sandbox Code Playgroud)

当我在入口点脚本运行时连接到容器时,我可以看到执行的命令以ps auxas运行 …

ruby-on-rails docker docker-compose docker-entrypoint

1
推荐指数
1
解决办法
3569
查看次数

如果 ENTRYPOINT 未完成,Dockerfile 不会运行 CMD

我正在尝试运行一个运行 PostgreSQL 的 Dockerfile,然后向其中添加一些表。

这是我的 Dockerfile:

FROM postgres:9.6

MAINTAINER agomez@ikerlan.es

USER postgres
ADD ./backup.sql /backup.sql
ADD ./deploy/import_database.sh /import_database.sh

USER root
RUN chmod +x /import_database.sh

USER postgres

ENTRYPOINT ./docker-entrypoint.sh postgres
CMD ./import_database.sh
Run Code Online (Sandbox Code Playgroud)

入口点没有完成,因为它运行 postgres 服务器。例如,如何在运行 ENTRYPOINT 20 秒后运行 CMD,但没有完成 ENTRYPOINT?

是否可以?

postgresql cmd docker dockerfile docker-entrypoint

0
推荐指数
1
解决办法
881
查看次数

添加根密码并在启动时在 MongoDB Docker 容器上创建应用程序用户

每个人,

我很难设置一个 MongoDB 容器来拥有 root 密码并自动创建一个权限较低的新用户(这将是我的应用程序用户)。

理想情况下,我应该只有一些脚本和 docker-compose 配置。

我尝试添加 MONGO_INITDB_ROOT_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD 但它们似乎不起作用。他们做了一些事情,因为当我像这样启动容器时,我不能只连接到 mongo shell 并运行所有命令(并且传递用户名和密码将引发未经授权的错误)。

然后我考虑添加一个脚本,/docker-entrypoint-initdb.d/但它们似乎没有运行。它们不会显示在控制台上。此外,我只是放了一个像这样的JavaScript,我不确定它们是否会工作:

var db = connect("mongodb://localhost/admin");

db.createRole(
    {
        role: "somerole",
        privileges: [
            {
              actions: [ "find", "update", "insert" ],
              resource: { db: "mydb", collection: "" } <--- does it means all colections od database mydb?!?!
            }
          ],
        roles: [  ]
    }
)

db.createUser(
    {
        user: "admin",
        pwd: "adminpass",
        roles: [ { role: "userAdminAnyDatabase", db: "mydb" } ]
    }
)

db.createUser(
    {
        user: …
Run Code Online (Sandbox Code Playgroud)

mongodb docker docker-compose docker-entrypoint

0
推荐指数
1
解决办法
3323
查看次数