在Docker中安装Coco

在本章中,我们给出一个如何在Docker中运行Coco的示例,仅终端交互。

先决条件

  1. 一台Linux机器,在这个示例中 Debian
  2. Docker(最新版本,但任何稳定版本都应该可以正常工作)。

Docker的安装

在安装Coco之前,我们需要安装Docker。要检查您的计算机上是否运行了Docker,请键入

$ docker --version

如果您的计算机上已经安装了Docker,则跳过以下步骤。

从Debian仓库安装

标准的Debian发行版已经包含了Docker软件包。它通常被称为 dockerdocker.io。要安装它,请运行

$ sudo apt-get install docker.io

从Docker仓库安装

如果您需要Docker的最新版本,可以使用Docker仓库。以下安装Docker的步骤对于所有基于Linux的机器来说都是类似的。有关更多信息,请参阅Docker文档。

  1. 更新apt软件包索引
    $ sudo apt-get update
  2. 安装允许apt通过HTTPS使用存储库的软件包
    $ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
  3. 添加Docker的官方GPG密钥
    $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
  4. 使用以下命令设置稳定的存储库
    $ sudo add-apt-respostiory \
            "deb [arch=amd64] https://download.docker.com/linux/debian \
            $(lsb_release -cs) \
            stable"
  5. 更新apt软件包索引
    $ sudo apt-get update
  6. 安装Docker CE和containerd的最新版本
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io

安装验证

现在请验证您的用户账户是否有权限运行Docker容器。在大多数UNIX®系统上,用户必须是docker组的成员。要验证此,请使用id命令,该命令将打印出用户当前所在的组。如果您不是docker的成员,请运行

$ sudo adduser <own account> docker

但在之后,通常需要重新登录才能使组更改可见。

要验证Docker CE是否正确安装,请运行hello-world镜像

$ docker run hello-world

要删除hello-world镜像,首先运行

$ docker ps -a

输出应为一组容器列表,包含名称、状态等。它应包含一个标题行和一个用于 hello-world 图像的行。在第一列中是 hello-world 图像的容器 ID。

$ docker rm <容器ID>

在 Docker 容器中安装 Coco

  1. 创建一个空的目录。我们将称之为 工作目录
  2. 将 Coco 软件包下载到工作目录。它必须以 .run 结尾的文件,例如 SquishCocoSetup_5.0.0_Linux_x86_64.run
  3. 在工作目录中,创建一个名为 Dockerfile 的文件,内容如下:
    # Select base image
    FROM debian
    
    # Install packages for your project
    RUN apt-get update && apt-get upgrade -y && apt-get install -y libgtk2.0-dev
    
    # Set "secret" as root password
    RUN echo "root:secret" | chpasswd
    
    # Define a user
    RUN useradd -ms /bin/bash myapp
    USER myapp
    WORKDIR /home/myapp
    
    # Copy the Coco installer to the work directory
    COPY SquishCocoSetup*.run .

    对于实际项目,文件内容需要相应调整。以下示例做了以下操作:

    1. 从 Docker Hub 网站加载一个镜像。在这种情况下,它是最新的 Debian 镜像,但任何 Linux 镜像都应适用。
    2. 安装一些软件包。在实际应用中,这些将是对应软件项目的先决条件,对代码覆盖率进行测量。

      这里给出的安装命令显然只在 Debian 或类似 Debian 的系统中有效,例如 Ubuntu。

    3. 设置 root 密码,该密码稍后由 Coco 安装程序通过用户账号运行。
    4. 创建一个用户账号。
    5. 将 Coco 安装程序复制到容器中。它将位于用户 myapp 的家目录。

      通配模式 SquishCocoSetup*.run 适用于任何 Coco 安装程序包的名称,不受版本号限制。

  4. 在工作目录中,运行以下命令:
    $ docker build -t squishcoco .

    然后 Docker 将创建一个名为 squishcoco 的镜像。

  5. 要运行该镜像,请执行以下命令:
    $ docker run -it --name runner squishcoco

    然后,将创建并启动一个名为 runner 的容器。

  6. 你现在将看到容器的命令提示符,而不再是操作系统的。你现在位于用户 myapp 的家目录。

    此目录还包含 Coco 安装程序的副本。你可以用类似以下命令来运行它:

    myapp@a6e8af:~$ bash SquishCocoSetup_5.0.0_Linux_x86_64.run

    安装程序将让您在不同的安装模式之间进行选择。选择第一个,在本地机器上安装。安装程序将询问 root 密码,当然,是 秘密 的。

    安装结束时,安装程序会询问 您是否想要启动 \COCO 许可证管理器来注册此产品?。回答 ,因为安装程序使用图形界面,而在 Docker 容器中通常无法使用。

  7. 相反,必须使用非 GUI 版本的许可证管理器。运行以下命令之一:
    • 如果您获得了激活码,请确保 Docker 容器已启用网络访问,然后运行:

      myapp@a6e8af:~$/opt/SquishCoco/bin/cocolic --fetch-license-key=<激活码>

      然后将从许可证服务器获取许可证密钥。之后,可以再次禁用网络访问。

    • 如果您已经有了许可证密钥,则运行:

      myapp@a6e8af:~$/opt/SquishCoco/bin/cocolic --license-key=<许可证密钥>

    • 如果您使用许可证服务器,则运行:

      myapp@a6e8af:~$/opt/SquishCoco/bin/cocolic --license-server=<服务器>:<端口号>

      在这种情况下,Docker 容器需要在编译期间以及每次 Coco 工具运行时启用网络访问。当被强化程序运行时,不需要网络访问。

    如果显示错误消息,请联系 froglogic 支持。

    或者,您可以通过运行以下命令来检查许可证是否已激活:

    myapp@a6e8af:~$/opt/SquishCoco/bin/cocolic --check

  8. 现在 Coco 已在 Docker 中安装。您可以使用 exit 命令退出容器。
  9. 要再次进入容器,运行
    $ docker start -ai runner

Coco v7.2.0©2024 The Qt Company Ltd.
Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标均为其各自所有权人的财产。