Skip to content
This repository has been archived by the owner on Dec 13, 2020. It is now read-only.

Commit

Permalink
Fully testing .service file by starting/stopping.
Browse files Browse the repository at this point in the history
Finally got systemd working in a Docker container. References:
fedora-cloud/docker-brew-fedora#24
moby/moby#7459

Fixes #1

Creating home directory subdirs.
  • Loading branch information
Robpol86 committed Feb 7, 2016
1 parent 80c6cf2 commit 0821447
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 6 deletions.
1 change: 1 addition & 0 deletions DockerfileTemplates/DockerfileFedoraBuild
Expand Up @@ -11,3 +11,4 @@ ENV NAME="$NAME" SUMMARY="$SUMMARY" URL="$URL" VERSION="$VERSION"

RUN groupadd -r user && useradd -r -g user user
RUN dnf builddep -y --spec $NAME.spec
RUN echo 'addFilter("E: dir-or-file-in-home")' >> /etc/rpmlint/config
4 changes: 3 additions & 1 deletion DockerfileTemplates/DockerfileFedoraRun
Expand Up @@ -3,9 +3,10 @@
FROM build/$MODE
MAINTAINER Robpol86 <robpol86@gmail.com>

VOLUME /sys/fs/cgroup /run /tmp
ADD $NAME-$VERSION-*.rpm /build/

ENV LANG=en_US.utf8 LC_ALL=en_US.utf8
ENV LANG=en_US.utf8 LC_ALL=en_US.utf8 container=docker

RUN dnf install -y \
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-23.noarch.rpm \
Expand All @@ -14,3 +15,4 @@ RUN dnf install -y \
python3-pytest
RUN dnf install -y $NAME-$VERSION-*.rpm
RUN pip3 install pytest-catchlog pytest-httpretty
CMD /lib/systemd/systemd
2 changes: 0 additions & 2 deletions FlashAirMusic.ini
Expand Up @@ -3,6 +3,4 @@
[FlashAirMusic]
log = /var/log/FlashAirMusic/FlashAirMusic.log
mac-addr = 00:00:00:00:00:00
music-source = ~/music_source
quiet = true
working-dir = ~/working_dir
1 change: 0 additions & 1 deletion FlashAirMusic.service
Expand Up @@ -18,7 +18,6 @@ Nice=10
NoNewPrivileges=true
PrivateDevices=true
PrivateTmp=true
ProtectHome=true
ProtectSystem=full
StandardError=syslog
StandardOutput=syslog
Expand Down
6 changes: 6 additions & 0 deletions FlashAirMusic.spec
Expand Up @@ -45,6 +45,9 @@ Version: %{getenv:VERSION}
%{__install} -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
%{__install} -d -m 0755 %{buildroot}%{_sysconfdir}/logrotate.d
%{__install} -d -m 0755 %{buildroot}%{_unitdir}
%{__install} -d -m 0755 %{buildroot}/home/%{base_module}
%{__install} -d -m 0755 %{buildroot}/home/%{base_module}/fam_music_source
%{__install} -d -m 0755 %{buildroot}/home/%{base_module}/fam_working_dir
%{__install} -m 0644 %{name}.ini %{buildroot}%{_sysconfdir}/%{name}/
%{__install} -m 0644 %{name}.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
%{__install} -m 0644 %{name}.service %{buildroot}%{_unitdir}/
Expand All @@ -68,6 +71,9 @@ exit 0
%config(noreplace) %attr(-, root, %{daemon_group}) %{_sysconfdir}/%{name}/%{name}.ini
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%dir %attr(-, %{daemon_user}, %{daemon_group}) %{_localstatedir}/log/%{name}
%dir %attr(-, %{daemon_user}, %{daemon_group}) /home/%{base_module}
%dir %attr(-, %{daemon_user}, %{daemon_group}) /home/%{base_module}/fam_music_source
%dir %attr(-, %{daemon_user}, %{daemon_group}) /home/%{base_module}/fam_working_dir
%doc README.rst
%license LICENSE
%{_bindir}/%{name}
Expand Down
18 changes: 16 additions & 2 deletions Makefile
Expand Up @@ -34,11 +34,15 @@ docker-build:
docker build -t run/$(MODE) .
rm Dockerfile

docker-run: DOCKER_CONTAINER_ID=$$(docker ps |grep run/$(MODE) |awk '{print $$1}')
docker-run:
docker run -v ${PWD}:/build:ro run/$(MODE) make docker-rpmtest
docker run -v ${PWD}:/build:ro run/$(MODE) make docker-rpmlint
docker run -v ${PWD}/tests:/build/tests:ro run/$(MODE) su -m user -c "py.test-3 tests"
docker run -v ${PWD}:/build:ro -v /sys/fs/cgroup -v /run -v /tmp --privileged -dti run/$(MODE)
docker logs $(DOCKER_CONTAINER_ID)
docker exec -ti $(DOCKER_CONTAINER_ID) make docker-rpmtest

docker-rpmtest:
docker-rpmlint:
systemd-analyze verify $(NAME).service
rpmlint $(NAME)
$(NAME) --help
Expand All @@ -47,3 +51,13 @@ docker-rpmtest:
test "$$(rpm -q $(NAME) --queryformat '%{URL}')" == "$(URL)"
test $$(rpm -q $(NAME) --queryformat '%{VERSION}') == "$(VERSION)"
test $$($(NAME) --version) == "$(VERSION)"

docker-rpmtest:
! test -f /var/log/$(NAME)/$(NAME).log
systemctl start $(NAME).service
sleep 2
systemctl status -l $(NAME).service
systemctl stop $(NAME).service
sleep 2
! systemctl status -l $(NAME).service
grep "Shutting down" /var/log/$(NAME)/$(NAME).log

0 comments on commit 0821447

Please sign in to comment.