2017-10-23 8 views
0

私はAEM 6.0のインストールをドッキングしようとしています。これは私の作者のDockerfileです。AEM 6.0 for docker - Dbus接続エラー

from centos:latest 

COPY aem6.0-author-p4502.jar /AEM/aem/author/aem6.0-author-p4502.jar 
COPY license.properties /AEM/aem/author/license.properties 

RUN yum install dnsmasq -y 
RUN systemctl enable dnsmasq 
RUN yum install initscripts -y 
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ 
rm -f /lib/systemd/system/multi-user.target.wants/*;\ 
rm -f /etc/systemd/system/*.wants/*;\ 
rm -f /lib/systemd/system/local-fs.target.wants/*; \ 
rm -f /lib/systemd/system/sockets.target.wants/*udev*;\ 
rm -f /lib/systemd/system/sockets.target.wants/*initctl*;\ 
rm -f /lib/systemd/system/basic.target.wants/*;\ 
rm -f /lib/systemd/system/anaconda.target.wants/*; 

WORKDIR /AEM/aem/author 
RUN yum install wget -y 
RUN wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm" 
RUN yum localinstall jdk-8u151-linux-x64.rpm -y 
RUN java -XX:MaxPermSize=256m -Xmx512M -jar aem6.0-author-p4502.jar -unpack 

COPY aem6 /etc/init.d/aem6 
RUN chkconfig --add aem6 
RUN yum -y install initscripts && yum update -y & yum clean all 

RUN chown -R $USER:$(id -G) /etc/init.d 
RUN chmod 777 -R /etc/init.d/aem6 
RUN systemctl enable aem6.service 
RUN service aem6 start 
VOLUME /sys/fs/cgroup 
CMD /usr/sbin/init 

ビルドがエラーで、サービスの開始に失敗する - failed to get Dbus connection error。私はそれを修正する方法を見つけることができませんでした。

私が試したこれらの - https://github.com/CentOS/sig-cloud-instance-images/issues/45 - ここ

+0

ドッカーイメージはsystemdを実行しないため、これは機能しません。複数のプロセスやサービスを起動するには、supervisordを実行する必要があります。 –

+0

私はドッカーに精通していません。しかし、1)Docker Version 2)CentOSバージョンなどの情報も提供されているといいですね。 – phemanthkumar28

+0

ドッカーの画像*はsystemdを実行できますが、ここで問題はありません。 – larsks

答えて

0

、問題はこの文で、「構築」フェーズでaemサービスを開始しようとしているということですhttps://hub.docker.com/_/centos/

RUN service aem6 start 

これは、いくつかの理由で問題があります。まず、イメージを構築しています。この段階でサービスを開始するのは無意味です...ビルドプロセスが完了すると、は何もないが実行されています。イメージは単なるファイルの集合です。コンテナを起動するまではのプロセスがありません。その時点で、CMDENTRYPOINTは何が実行されているかに影響します。

もう1つの問題は、この段階ではコンテナ環境内で実行されていることがないことです。この場合のserviceコマンドは、dbus apiを使用してsystemdと通信しようとしていますが、どちらのサービスも実行されていません。

もう少し微妙な問題が3つあります。選択したソリューションは、標準のCentOSプロセスマネージャsystemdに依存しており、正しく設定されている限り、systemctl enable ...CMDステートメントで/sbin/initを開始してください)。しかし、コンテナ内でsystemdを実行することは、可能ではあるが、扱いにくいことがあります。以前は、systemdは、コンテナを--privilegedフラグで実行する必要がありました。これがもう必要かどうかは分かりません。

複数のプロセス(dnsmasqとaem)をコンテナ内で実行していない場合、最も簡単な解決策は、プロセスマネージャに頼るのではなく、aemサービスを直接開始することです。あなたが実際にdnsmasqのが必要な場合、あなたは(潜在的にAEMコンテナと同じネットワーク環境を共有する)は、第2の容器にそれを実行することができ

FROM centos:latest 

COPY aem6.0-author-p4502.jar /AEM/aem/author/aem6.0-author-p4502.jar 
COPY license.properties /AEM/aem/author/license.properties 

WORKDIR /AEM/aem/author 
RUN yum install wget -y 
RUN wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm" 
RUN yum localinstall jdk-8u151-linux-x64.rpm -y 
RUN java -XX:MaxPermSize=256m -Xmx512M -jar aem6.0-author-p4502.jar -unpack 

CMD some commandline to start aem 

:これは次のようにあなたのDockerfileを低減するであろう。

+1

ちなみに、私は 'FROM centos:latest'を' FROM centos:7'と書き直します。そうしないと、CentOS 8が出てあなたのソフトウェアと互換性がない場合に、将来的に問題が起きます。 – larsks

関連する問題