Reputation: 1203
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
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