SoT
SoT

Reputation: 1203

DOCKERFILE RUN addgroup: group 'postgres' in use

I have a dockerfile just contains:

FROM openjdk:8-jdk-alpine

RUN addgroup -S -g 9999 jboss && adduser -S -G jboss -u 999 jboss \
    && mkdir -p /opt/jboss && chgrp jboss /opt/jboss && chmod 775 /opt/jboss \
    && addgroup -g 70 -S postgres \
    && adduser -u 70 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres \
    && mkdir -p /var/lib/postgresql \
    && chown -R postgres:postgres /var/lib/postgresql

When I run

docker build . 

I got

addgroup: group 'postgres' in use
The command '/bin/sh -c addgroup -S -g 9999 jboss && adduser -S -G jboss -u 999 jboss && mkdir -p /opt/jboss && chgrp jboss /opt/jboss && chmod 775 /opt/jboss     && addgroup -g 70 -S postgres    && adduser -u 70 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres    && mkdir -p /var/lib/postgresql     && chown -R postgres:postgres /var/lib/postgresql' returned a non-zero code: 1

When I replace postgres with another value

addgroup -g 70 -S blabla

I got

addgroup: gid '70' in use
The command '/bin/sh -c addgroup -S -g 9999 jboss && adduser -S -G jboss -u 999 jboss && mkdir -p /opt/jboss && chgrp jboss /opt/jboss && chmod 775 /opt/jboss     && addgroup -g 70 -S blabla  && adduser -u 70 -S -D -G postgres -H -h /var/lib/postgresql -s /bin/sh postgres    && mkdir -p /var/lib/postgresql     && chown -R postgres:postgres /var/lib/postgresql' returned a non-zero code: 1

When I completely remove addgroup and adduser postgres, it works perfectly. I do not know whether I'm doing wrong somewhere. Could you help to explain to me why this happen?

PS: My host computer is running postgresql, can it effect to the build of docker? I think it's not related, right?

Upvotes: 1

Views: 3791

Answers (1)

jkr
jkr

Reputation: 19260

The postgres group and user already exist in Alpine Linux, according to https://git.alpinelinux.org/alpine-baselayout/tree/group (linked to from https://wiki.alpinelinux.org/wiki/Setting_up_a_new_user#addgroup).

You can also prove this to yourself by running the base image as the postgres user:

$ docker run --rm -it --user postgres:postgres openjdk:8-jdk-alpine id
uid=70(postgres) gid=70(postgres)

or looking at the contents of /etc/passwd in the base image:

root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
operator:x:11:0:operator:/root:/bin/sh
man:x:13:15:man:/usr/man:/sbin/nologin
postmaster:x:14:12:postmaster:/var/spool/mail:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
at:x:25:25:at:/var/spool/cron/atjobs:/sbin/nologin
squid:x:31:31:Squid:/var/cache/squid:/sbin/nologin
xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
postgres:x:70:70::/var/lib/postgresql:/bin/sh   # Here I am!
cyrus:x:85:12::/usr/cyrus:/sbin/nologin
vpopmail:x:89:89::/var/vpopmail:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
smmsp:x:209:209:smmsp:/var/spool/mqueue:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin

Upvotes: 2

Related Questions