如何组合两个或多个 Docker 镜像

JiK*_*Kra 3 docker

我是 docker 的新手。我想用我的 Web 应用程序创建一个图像。我需要一些应用程序服务器,例如 wlp,然后我需要一些数据库,例如 postgres。

wlp 有一个 Docker 映像,postgres 有一个 Docker 映像。

所以我创建了以下简单的 Dockerfile。

FROM websphere-liberty:javaee7
FROM postgres:latest
Run Code Online (Sandbox Code Playgroud)

现在,也许它很蹩脚,但是当我构建这个图像时

docker build -t wlp-db .
Run Code Online (Sandbox Code Playgroud)

运行容器

docker run -it --name wlp-db-test wlp-db
Run Code Online (Sandbox Code Playgroud)

并检查它

docker exec -it wlp-db-test /bin/bash
Run Code Online (Sandbox Code Playgroud)

只有 postgres 正在运行,而 wlp 甚至不在那里。目录/opt为空。

我错过了什么?

Ari*_*ult 7

您需要使用 docker-compose 文件。这使您可以绑定运行两个不同映像的两个不同容器。一个保存您的服务器,另一个保存数据库服务。

这是使用 mongodb 容器的 nodejs 服务器容器的示例

首先,我编写docker文件来配置主容器

FROM node:latest

RUN mkdir /src

RUN npm install nodemon -g

WORKDIR /src
ADD app/package.json package.json
RUN npm install

EXPOSE 3000

CMD npm start
Run Code Online (Sandbox Code Playgroud)

然后我创建 docker-compose 文件来配置两个容器并链接它们

version: '3' #docker-compose version
services:  #Services are your different containers
  node_server: #First Container, containing nodejs serveer
    build: . #Saying that all of my source files are at the root path
    volumes: #volume are for hot reload for exemple
      - "./app:/src/app"
    ports:   #binding the host port with the machine
      - "3030:3000"
    links:   #Linking the first service with the named mongo service (see below)
      - "mongo:mongo" 
  mongo: #declaration of the mongodb container
    image: mongo #using mongo image
    ports:  #port binding for mongodb is required
      - "27017:27017"
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。