#50197 Improve container integration features
Closed: wontfix 4 years ago by firstyear. Opened 5 years ago by firstyear.

Issue Description

In developing a container for 389 this has shown a small number of remaining lib389 changes that are required. This is an umbrella ticket for this. This includes:

  • Randomisation of the DM password on creation
  • tls db checks should only check content, not the directory
  • maybe more ....

"In developing a container for 389" <--- what does that mean?

To me containers are systemd light-weight namespace containers which arguably are the only "container" solution that upstreams should be focusing working on ( because you get immediate out of the box support for that on roughly 200 systemd based linux distribution out there) but to you "containers" might be some code bloat like docker so you ( and everyone in the project ) need refrain themselves from using the generic term "container" because it means different things to different people because there are so many container solution out there.

Every reference, every documentation etc. needs to refer to the exact container solution in question so when 389ds project speaks of containers it speaks of what exactly?

@johannbg It means it making a container image for 389. IE this set of changes allows us to work properly inside of docker/other by granting a set of wrappers that make ds work in a stateless manner that a container run time provides.

Metadata Update from @firstyear:
- Custom field origin adjusted to None
- Custom field reviewstatus adjusted to None

5 years ago
  • Make post install startup a flag to slapd
  • Move locations from symlinks to create args in container mode
  • Allow defaults.inf merging from container.inf to let some of these flags persist.

dscreate is broken.

  File "/usr/local/lib/python3.7/site-packages/lib389/instance/setup.py", line 150, in _validate_ds_2_config
      slapd_options = Slapd2Base(self.log, self.containerised)
  TypeError: __init__() takes 2 positional arguments but 3 were given

I've put the fix to https://pagure.io/389-ds-base/pull-request/50264

What is the status of this issue? Is there more work to do?

Honestly, I think this is actually just in need of some final testing of a dockerfile, but I think it's good to go?

Metadata Update from @mreynolds:
- Issue set to the milestone: 1.4.1

5 years ago

The dockerfile I am using for testing currently, with #50311 and #50335

# Build Container

FROM alpine

ARG VERSION=1.4.1.2

RUN apk add --no-cache autoconf automake libtool pkgconfig build-base cracklib-dev linux-pam-dev libevent-dev nspr-dev nss-dev openldap-dev db-dev icu-dev net-snmp-dev krb5-dev pcre-dev cmocka-dev python3 python3-dev rsync
RUN pip3 install argparse_manpage argcomplete python-ldap six python-dateutil

RUN wget https://pagure.io/389-ds-base/archive/389-ds-base-${VERSION}/389-ds-base-389-ds-base-${VERSION}.tar.gz
RUN tar xf 389-ds-base-389-ds-base-${VERSION}.tar.gz
WORKDIR /389-ds-base-389-ds-base-${VERSION}

COPY alpine-build.patch .
RUN patch -p1 < alpine-build.patch

RUN autoreconf -fiv && ./configure --enable-cmocka --prefix=/usr --sysconfdir=/etc --localstatedir=/var && make && make lib389
RUN make check && DESTDIR=/out make install && cd src/lib389 && python3 setup.py install --skip-build --root=/out

# Runtime container

FROM alpine

RUN apk add --no-cache python3 libldap nss nss-tools nspr krb5 pcre cracklib ca-certificates libevent icu linux-pam

RUN adduser -D -h /var/run/dirsrv dirsrv
COPY --from=0 /usr/lib/python3.6/site-packages/ /usr/lib/python3.6/site-packages/
COPY --from=0 /out /

EXPOSE 3389 3636
RUN mkdir -p /data/config && \
    mkdir -p /data/ssca && \
    ln -s /data/config /etc/dirsrv/slapd-localhost && \
    ln -s /data/ssca /etc/dirsrv/ssca && \
    chown -R dirsrv /data
VOLUME /data

USER dirsrv
CMD ["/usr/sbin/dscontainer", "-r"]

@codehotter Hey there, really happy to see you are interested to get this building in a container.

Most of my intent for these changes was to get this building on OpenSUSE, but also happy to see it being added to alpine too. Thanks!

Yep, I think we really are there now :)

Metadata Update from @firstyear:
- Issue close_status updated to: fixed
- Issue status updated to: Closed (was: Open)

4 years ago

389-ds-base is moving from Pagure to Github. This means that new issues and pull requests
will be accepted only in 389-ds-base's github repository.

This issue has been cloned to Github and is available here:
- https://github.com/389ds/389-ds-base/issues/3256

If you want to receive further updates on the issue, please navigate to the github issue
and click on subscribe button.

Thank you for understanding. We apologize for all inconvenience.

Metadata Update from @spichugi:
- Issue close_status updated to: wontfix (was: fixed)

3 years ago

Login to comment on this ticket.

Metadata