首页 > 解决方案 > 从节点 alpine 和 mysql 构建的 Docker-compose 推送图像

问题描述

初步信息

我有一个 docker-compose 文件,它描述了两个服务,一个是从 dockerhub mysql 映像构建的,另一个是从 dockerhub 节点 alpine 映像构建的。docker-compose.yml如下:

version: "3.8"
services:
  client:
      image: node:alpine
      command: sh -c "cd server && yarn install && cd .. && yarn install && yarn start"
      ports:
        - "3000:3000"
      working_dir: /portal
      volumes: 
        - ./:/portal
      environment:
        MYSQL_HOST: mysql
        MYSQL_USER: root
        MYSQL_PASSWORD: password
        MYSQL_DB: files
  mysql:
      image: mysql:5.7
      volumes:
          - yaml-mysql-data:/var/lib/mysql
      environment:
        MYSQL_ROOT_PASSWORD: password
        MYSQL_DATABASE: files
    
volumes:
  yaml-mysql-data:

目前的理解

我正在尝试使用 kubernetes 部署我的应用程序,但 kubernetes .yml 文件要求我在 dockerhub 上提供容器映像的路径。但是,我在 dockerhub 上没有它们。我不确定如何推送我的图像,因为它们是从我提取的 mysql 和节点图像构建的。

我知道docker-compose push可以使用,但是它是用于本地构建的图像;而我正在从 dockerhub 中提取图像,并在docker-compose.yml启动它们时提供具体的说明。

问题

如何推送这些图像,包括应该运行的命令;例如command: sh -c "cd server && yarn install && cd .. && yarn install && yarn start"?(在docker-compose.yml上面的第 5 行)

谢谢

标签: dockerkubernetesdocker-compose

解决方案


您放入 docker-compose.yml 的逻辑实际上属于 Dockerfile。因此,为您的 nodejs 应用程序创建一个 Dockerfile(有很多示例)。

然后在您的 docker-compose.yml 中构建您自己的镜像,然后您可以将其推送到注册表。

version: "3.8"
services:
  client:
      image: your_registry/your_name:some_tag
      build: .
      ports: ...
      environment: ....

推荐阅读