当前位置: 首页 > 知识库问答 >
问题:

如何在系统启动时运行docker-compose up-d?

宗政英才
2023-03-14

为了让容器在启动点自动启动,我尝试添加以下命令:

cd目录_has_docker-compose.yml

但是在我重新启动计算机后,容器无法正常工作。

如何在系统启动时运行docker compose-up-d


共有3个答案

关翰
2023-03-14

如果您的泊坞窗服务在系统启动时启用

$ sudo systemctl enable docker

以及您在docker组件中的服务。yml具有

restart: always

如果只运行一次以下命令,则所有服务都会在重新启动系统时运行

docker-compose up -d
戎俊
2023-03-14

您应该能够添加:

restart: always 

docker-compose.yml文件中要重新启动的每个服务。

请参见:https://github.com/compose-spec/compose-spec/blob/master/spec.md#restart

古扬
2023-03-14

当我们使用crontab或不推荐使用的/etc/rc时。本地文件,我们需要一个延迟(例如sleep10systemd(或upstart)用于管理系统启动时启动的服务。您可以尝试对此使用类似的配置:

# /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

或者,如果您想在没有-d标志的情况下运行:

# /etc/systemd/system/docker-compose-app.service

[Unit]
Description=Docker Compose Application Service
Requires=docker.service
After=docker.service
StartLimitIntervalSec=60

[Service]
WorkingDirectory=/srv/docker
ExecStart=/usr/local/bin/docker-compose up
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

用您的文档化项目路径更改< code>WorkingDirectory参数。并使服务自动启动:

systemctl enable docker-compose-app

 类似资料:
  • 问题内容: 假设我有一个要运行的Docker容器,那么我可以调用 一切都很好。如果系统崩溃并重新启动,是否有内置的方式来运行容器,使其能够自动重新启动? 如果是这样,这在Docker Compose中也可用吗? 问题答案: 是的,docker具有重启策略,该策略可以处理此问题。这也可以在compose.yml配置文件中找到。

  • 假设我有一个要运行的Docker容器,然后我可以调用 一切都很好。是否有一种内置方法可以运行容器,以便在系统崩溃并重新启动时自动重新启动容器? 如果是这样,这在 Docker Compose 中是否也可用?

  • 我有一个Dockerfile来在容器中安装MySQL server,然后我这样开始: 但MySQL服务不会自动启动,我必须手动运行(从容器内): 如何在运行docker容器时自动启动MySQL服务?

  • 问题内容: 我有一个Dockerfile将MySQL服务器安装在一个容器中,然后我开始像这样: 但是MySQL服务不会自动启动,我必须手动运行(从容器内部): 运行docker容器时如何自动启动MySQL服务? 问题答案: 首先,有一个 问题, 在您的: Docker映像不会保存正在运行的进程。因此,您的命令仅在阶段执行,并在构建完成后停止。相反,您需要使用或如下所示的命令在启动容器时指定命令:

  • 我需要某种方式来启动我的Java应用程序,而不强制用户手动运行应用程序。我不完全确定我将如何做到这一点,有人能提供任何帮助吗?

  • 问题内容: 在容器内运行服务时,假设使用mongodb命令 将立即退出,并返回容器ID。在我的CI脚本中,我在运行mongo容器之后立即运行客户端以测试mongodb连接。问题是:由于服务尚未启动,客户端无法连接。除了在脚本中添加大字体外,我看不到任何等待容器启动并运行的选项。 Docker的命令在这种情况下不起作用,因为该容器不存在。是docker的限制吗? 问题答案: 如在docker 1.1