如何将Dockerfile转换为Docker Compose镜像?

11

这是我使用基于Ubuntu的NodeJS和MeteorJS创建Docker镜像的方法。 我将使用此镜像进行一些测试。

现在我正在考虑通过Docker Compose完成此操作。 但这是否可能? 我能否将这些命令转换为Docker Compose yml文件?

FROM ubuntu:16.04

COPY package.json ./

RUN apt-get update -y && \
    apt-get install -yqq \
        python \
        build-essential \
        apt-transport-https \
        ca-certificates \
        curl \
        locales \
        nodejs \
        npm \
        nodejs-legacy \
        sudo \
        git

## NodeJS and MeteorJS
RUN curl -sL https://deb.nodesource.com/setup_4.x | bash -
RUN curl https://install.meteor.com/ | sh

## Dependencies
RUN npm install -g eslint eslint-plugin-react
RUN npm install

## Locale
ENV OS_LOCALE="en_US.UTF-8"
RUN locale-gen ${OS_LOCALE}
ENV LANG=${OS_LOCALE} LANGUAGE=en_US:en LC_ALL=${OS_LOCALE}

## User
RUN useradd ubuntu && \
    usermod -aG sudo ubuntu && \
    mkdir -p /builds/core/.meteor /home/ubuntu && \
    chown -Rh ubuntu:ubuntu /builds/core/.meteor && \
    chown -Rh ubuntu:ubuntu /home/ubuntu
USER ubuntu
1个回答

35

Docker Compose不会替代你的Dockerfile,但你可以使用Docker Compose根据你的Dockerfile构建一个镜像:在此链接查看

version: '3'
services:
  myservice:
    build:
      context: /path/to/Dockerfile/dir
      dockerfile: Dockerfile
    image: result/latest

现在你可以使用以下方式构建它:

docker-compose build

并且以以下方式开始:

docker-compose up -d

1
我该如何设置创建的图像/容器的名称和标签,以获得类似于“result:latest”的结果? - user3142695
1
构建 Docker 镜像并不需要使用 Docker Compose。您应该使用 docker build 命令。Docker Compose 用于创建多个服务,并确保它们可以相互通信,就像需要 Web 应用程序、数据库、Elasticsearch(假设)和 Redis(假设)的基础架构设置一样。 - Artūrs Lataks
@ArtūrsLataks,我同意,“docker build”是构建镜像的常规方式,但有时您可能希望使用docker compose进行构建,例如在运行自动测试时(https://www.digitalocean.com/community/tutorials/how-to-configure-a-continuous-integration-testing-environment-with-docker-and-docker-compose-on-ubuntu-14-04)。 - Brian from QuantRocket
@user3142695,您可以使用image键与build键结合使用来标记构建的镜像:https://docs.docker.com/compose/compose-file/#image 请参见上面更新的答案。 - Brian from QuantRocket
@Brian 是的,这就是我所说的 - 当您需要多个相互交互的服务时 :) - Artūrs Lataks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接