相关疑难解决方法(0)

在perl6中睡眠在docker-compose上无法正常工作

我写了一个简单的程序,它应该打印1到9之间的数字,等待1秒钟打印.

#!/usr/bin/env perl6

my $x = 1;
while $x < 10 {
    say $x++;
    sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行它时,它按预期工作

视频1

我试图使用docker容器和程序打印的第一个数字来实现相同的效果,然后在9秒后冻结并打印剩余的数字.

视频2

我的码头组成

version: "3.1"
services:
    cron:
      build: phpdocker/cron
      container_name: docker-perl6
      volumes:
        - ./cron:/cron
      working_dir: /cron
      command: "app.pl"
Run Code Online (Sandbox Code Playgroud)

和Dockerfile

FROM jjmerelo/alpine-perl6
Run Code Online (Sandbox Code Playgroud)

版本

docker -v
Docker version 18.03.1-ce, build 9ee9f40

docker-compose -v
docker-compose version 1.15.0, build e12f3b9

perl6 -v
This is Rakudo version 2018.03-136-g768cf9f built on MoarVM version 2018.03-56-g85fc758
implementing Perl 6.c.
Run Code Online (Sandbox Code Playgroud)

更新

我换say $x++;say "{time}: {$x++}";

docker-perl6 | 1527933936: …
Run Code Online (Sandbox Code Playgroud)

sleep perl6 docker docker-compose

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

Monolog stdout/stderr 记录到 Docker 中的当前终端进程

我有一个在 Docker 中运行的 PHP/Symfony 应用程序,它使用 Monolog 登录到 stdout/stderr。这一切都很好,除非在容器内运行 Symfony 控制台命令。

monolog:
    handlers:
        stdout:
            type: filter
            handler: stdout_unfiltered
            max_level: notice
            channels: ['!event']

        stdout_unfiltered:
            type: stream
            level: debug
            path: 'php://stdout'

        stderr:
            type: stream
            level: warning
            channels: ['!event']
            path: 'php://stderr'

        console:
            type: console
            channels: ['!console', '!doctrine', '!event']
            process_psr_3_messages: false

Run Code Online (Sandbox Code Playgroud)

问题在于,无论何时执行命令,“stdout”、“stderr”和“console”处理程序都会记录到当前终端进程。这会导致控制台输出混乱,并且docker logs不包含日志条目:http : //i.imgur.com/yB1IKrR.png

是否有一种简单的方法可以始终将日志输出发送到 php-fpm(或任何工作程序)进程?

symfony monolog docker

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

如何在docker容器中运行cron作业?

我有一个 python 脚本,用于填充 AWS 中的 Postgres 数据库。

我能够手动运行它并且它正在将数据加载到数据库中而没有任何问题。我想在 docker 容器内每 5 分钟运行一次。

所以我将它包含在 docker 镜像中运行。但我不确定为什么它没有运行。我看不到任何附加到/var/log/cron.log文件的内容。有人可以帮我弄清楚为什么它没有运行吗?

我能够在 docker build 期间将脚本复制到图像并能够手动运行它。正在填充数据库,我得到了预期的输出。

脚本位于当前目录中,该目录将被复制到/code/文件夹中

这是我的代码:

Dockerfile:

FROM python:3
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get install -y cron
RUN apt-get install -y postgresql-client
RUN touch /var/log/cron.log
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD . /code/
COPY crontab /etc/cron.d/cjob
RUN chmod 0644 /etc/cron.d/cjob
CMD cron && tail -f /var/log/cron.log
Run Code Online (Sandbox Code Playgroud)

定时任务:

*/5 * * * * python3 …
Run Code Online (Sandbox Code Playgroud)

cron scheduled-tasks docker dockerfile

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

运行docker时如何传递crontab命令

我想通过docker run命令运行docker 并希望像 bleow 一样传递 crontab 命令。

crontab -l | '{ /bin/cat; /bin/echo "*/5 * * * * <some command>"; }' | crontab -
Run Code Online (Sandbox Code Playgroud)

上面的命令将创建一个 cronscript,它将在新创建的 docker 容器内每 5 分钟运行一次。

构建映像时我不需要提供此命令。*此 docker 将在计划作业时创建。

docker

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

在 docker-compose 中为特定服务添加 cron 作业(计划任务)的最佳方法是什么

我正在使用 docker-compose。我有一个网络和一个工人服务。

version: '3'
services:
  web:
    build: .
    environment:
      - "*"
    links:
      - redis
      - memcached
    ports:
      - "80:8001"
      - "443:8001"

  worker:
    build: .
    command: ["/bin/bash", "/home/django/start_celery.sh"]
    environment:
      - "*"
    links:
      - redis
      - memcached

  memcached:
    image: memcached
    ports:
      - "11211:11211"

  redis:
    image: redis
    ports:
      - "6379:6379"
Run Code Online (Sandbox Code Playgroud)

我需要在工作服务上运行 crons(计划任务)。

而且我不想在 Dockerfile 中对 crontab 进行硬编码,因为我对这两个服务使用相同的 dockerfile。

那么最好的方法是什么?

cron celery docker dockerfile docker-compose

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

WebApp for Containers 上的“Webjobs”选项卡已禁用

我正在尝试在创建和配置网络应用程序后添加网络作业。但 webjobs 选项卡被禁用

我尝试创建网络作业时的快照

azure

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

如何在 MariaDB 容器中运行 cron?

我想在 MariaDB 容器中包含一个基于最新映像的 cron 任务mariadb,但我坚持这样做。

我尝试了很多方法但没有成功,因为我无法同时启动 MariaDB 和 Cron。

这是我实际的 dockerfile:

FROM mariadb:10.3

# DB settings
ENV MYSQL_DATABASE=beurre \
    MYSQL_ROOT_PASSWORD=beurette

COPY ./data /docker-entrypoint-initdb.d
COPY ./keys/keys.enc home/mdb/
COPY ./config/encryption.cnf /etc/mysql/conf.d/encryption.cnf

# Installations
RUN apt-get update && apt-get -y install python cron

# Cron
RUN touch /etc/cron.d/bp-cron
RUN printf '* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1\n#' >> /etc/cron.d/bp-cron
RUN touch /var/log/cron.log
RUN chmod 0644 /etc/cron.d/bp-cron

RUN cron
Run Code Online (Sandbox Code Playgroud)

通过其设置,数据库可以正确启动,但“Cron”未初始化。为了使其工作,我必须进入容器并执行“Cron”命令,一切都运行良好。

因此,我正在寻找一种从 docker-compose 中使用的 Dockerfile 启动 db 和 …

docker dockerfile docker-compose

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

如何将 docker cron 日志写入 stdout/stderr

我有使用CMD ["cron","-f"]命令运行 cron 的 docker 。这会将输出写入 cron 日志文件。

有什么办法可以将这些日志重定向到控制台。

我的基本图像看起来像

FROM ubuntu:latest
RUN ls

RUN apt-get update
RUN apt install -y software-properties-common
RUN add-apt-repository -y ppa:openjdk-r/ppa
RUN apt-get update
RUN apt-get install -y openjdk-12-jre

RUN apt-get -y install cron wget unzip



RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \
    && apt-get update -qqy \
    && apt-get -qqy install google-chrome-stable \
    && rm /etc/apt/sources.list.d/google-chrome.list \
    && rm …
Run Code Online (Sandbox Code Playgroud)

cron stdout docker

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

备份 mongodb docker 实例的最佳策略?

在 mongodb docker 页面中,有以下关于如何转储 mongodb 集合的教程:

sudo docker exec container_name sh -c 'exec mongodump -d collection_name --archive' > /home/mongo_backup/all-collections.archive
Run Code Online (Sandbox Code Playgroud)

我想创建另一个定期运行此转储的容器(例如,一天两次)并将其保存到安装在其中的文件夹中。但是我可以mongodump从不是具有集合的容器的容器中提取吗?我可以mongodump通过本地网络吗?

解决这个问题后,仍然存在这个备份发送到哪里的问题。它不能与我部署的代码在同一个地方,因为它可能会被意外删除。

这是一个好的备份策略吗?有什么更好的想法吗?

backup mongodb docker

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