码头工人蜂拥而至

时间:2019-10-22 07:54:03

标签: docker docker-swarm docker-registry docker-swarm-mode

我将Docker版本19.03.3与docker swarm和docker Registry一起使用。 我想知道如何使用相同的图像但使用不同的构建。

我的swarm.yml:

version: '3'
services:

        db:
                image: 127.0.0.1:5000/postgres:11.5
                build: docker-compose.d/postgres
                environment:
                        - PG_MAX_WAL_SENDERS=8
                        - PG_WAL_KEEP_SEGMENTS=8
                        - PGDATA=/var/lib/postgresql/data/pgdata
                        - POSTGRES_USER=user
                        - POSTGRES_PASSWORD=password

                deploy:
                 placement:
                   constraints:
                       - node.role == manager
        db-slave:
                build: docker-compose.d/postgres/slave
                image: 127.0.0.1:5000/postgres:11.5
                environment:
                        - PGDATA=/var/lib/postgresql/data/pgdata
                        - REPLICATE_FROM=db
                        - POSTGRES_USER=user
                        - POSTGRES_PASSWORD=password

                deploy:
                 placement:
                   constraints:
                       - node.role == manager
                depends_on:
                        - db

docker映像:

127.0.0.1:5000/postgres   11.5                839a428f8eac        4 days ago          848MB
127.0.0.1:5000/postgres   <none>              e5636a8fc5f0        4 days ago          848MB
127.0.0.1:5000/postgres   <none>              6c1932b5707c        4 days ago          848MB
postgres                  11.5                5f1485c70c9a        5 days ago          293MB
registry                  <none>              f32a97de94e1        7 months ago        25.8MB

docker文件数据库:

FROM postgres:11.5
COPY ./cluster/ /docker-entrypoint-initdb.d/
RUN apt-get update -y
RUN apt-get install postgis -y

docker文件db-slave:

FROM postgres:11.5
RUN apt-get update -y
RUN apt-get install postgis iputils-ping -y
COPY setup-replication.sh /docker-entrypoint-initdb.d/
COPY docker-entrypoint.sh /docker-entrypoint.sh
COPY postgres.sql /docker-entrypoint-initdb.d/
RUN chmod +x /docker-entrypoint-initdb.d/setup-replication.sh /docker-entrypoint.sh

它们都从注册表中映像postgres:11.5,这引起了问题 因为我确实想在两者上都使用postgres 11.5,但是要使用不同的构建,因为我需要对两者都执行不同的构建过程。一个正在复制一个文件,而另一个则没有。(例如) 我该怎么办?

注册表将两个版本都保存为一个postgres:11.5

1 个答案:

答案 0 :(得分:0)

因为您使用的是相同的import React from "react"; export default function Accordian({ name, description }) { return ( <div> {name} -- {description} </div> ); } ,所以两者的名字相同。

在这种情况下,

image: 127.0.0.1:5000/postgres:11.5是结果图像的名称,而不是基础图像的名称。

因此,基本上将它们更改为:

image

还请注意,这适用于docker-compose。 Docker swarm无法构建容器,只能部署已经预构建的映像。