Dockerfileでのsystemctl実行方法について
困っていること
docker-compose up -dでnginxを起動、自動起動化まで自動で実施してくれるようにしたいと考えて試行錯誤していますが、うまく動作してくれません。Dockerfileの"RUN systemctl start nginx"の行でエラーが出力されてしまいます。
Building nginx
Step 1 : FROM centos:centos7
---> 67591570dd29
Step 2 : MAINTAINER nginx
---> Using cache
---> c36597f0415d
Step 3 : RUN yum -y install epel-release;
---> Using cache
---> 6708fdc2009f
Step 4 : RUN yum -y install nginx
---> Using cache
---> 15b951c70751
Step 5 : RUN cp -p /usr/share/zoneinfo/Japan /etc/localtime
---> Using cache
---> 52a75e8f3f4a
Step 6 : COPY nginx.conf /etc/nginx/nginx.conf
---> Using cache
---> 2b78c951f9f3
Step 7 : RUN systemctl start nginx
---> Running in 93eae267d64c
Failed to get D-Bus connection: Operation not permitted
ERROR: Service 'nginx' failed to build: The command '/bin/sh -c systemctl start nginx' returned a non-zero code: 1
"RUN systemctl start nginx"を省いた状態では、正常に動作してくれます。
(後ほどdocker execでコンテナに入り、"systemctl start nginx"する必要はあります)
期待する状態
"docker compose up -d"でnginxの起動まで自動化するにはどのように記述すればよろしいのでしょうか。お手数ですがご教示をお願いいたします。(参考URLを貼って頂くだけでも構いません)
※尚、下記URLに記載の内容とほぼ同じ内容なのですが、下記URLでは"カーネルのアップデートが実施できない"ということがメインですので改めて質問させていただきました。
Dockerfileから、centos7のサービスを起動したい
環境とファイルの記述
■環境
[root@gab docker]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@gab docker]# uname -r
3.10.0-514.2.2.el7.x86_64
■docker-compose.yml
nginx:
build: "."
container_name: "nginx"
ports:
- "80:80"
- "443:443"
volumes:
- /etc/letsencrypt/:/etc/letsencrypt/
command: /sbin/init
■Dockerfile
# CentOS 7.2のイメージ
FROM centos:centos7
MAINTAINER nginx
# システムアップデートとリポジトリ追加
RUN yum -y install epel-release;
# nginx他インストール
RUN yum -y install nginx
# timezone変更
RUN cp -p /usr/share/zoneinfo/Japan /etc/localtime
# nginx.confgのコピー
COPY nginx.conf /etc/nginx/nginx.conf
RUN systemctl start nginx