質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

3063閲覧

git+docker-composeでの自動デプロイの際のパーミッションの調整

BECK_

総合スコア94

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2017/11/02 03:24

編集2017/11/02 03:42

###実現したい事
git+dockerでLAMP環境構築をほぼ自動化したい。
httpd ユーザ権限にて書き込みするディレクトリのchownの手動ステップが挟まってしまい自動化出来てない。

※デザイナーにもリポジトリ配布したいので難しい事は避けたい
※自動化と書いてますが多少語弊があるので悪しからずご理解ください

###困っている点
前述の通りアップロードフォームの動作でwebコンテナのapache userでの書き込みの際パーミッションエラーが出てしまい自動化できていません。

docker-compose up -dの前に手動でホスト側の該当ディレクトリのパーミッションを手動で変更をすると問題なく動作します。

text

1git clone https://user@hogehoge/repos/ 2chown -R 1000:1000 ./contents/uplode.temp 3docker-compse up -d

chownのステップを先行ステップのgitか後続ステップのdocker-composeで吸収できないか?

###質問
gitではディレクトリーのパーミッションは管理しないと理解しているのですが、下記程度の手順で自動化をしたい場合ホスト側のフォルダーのパーミッション調整はどこ側でどの様に実装したらよいですか?

###試行した事
gitのサーバーサイドupdate hook? <= git pullしたら戻ってしまう..
docker-compose buildの際? <= docker-compose.yml内でホスト側のファイルに対してコマンド発行出来る?

text

1version: '2' 2services: 3 web: 4 build: 5 context: ./ 6 dockerfile: Dockerfile.web 7 image: project_hoge/web 8 container_name: web 9 ports: 10 - "80:80" 11 volumes: 12 - ./contents/html:/var/www/html 13 - ./contents/webapp:/var/www/webapp 14 - ./contents/uplode.temp:/var/www/uplode.temp 15 links: 16 - dbs:dbs 17 depends_on: 18 - dbs 19 environment: 20 - TZ=Asia/Tokyo 21

text

1FROM centos 2MAINTAINER myname 3 4RUN yum install -y epel-release 5RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm 6RUN yum install -y --enablerepo=remi httpd httpd-devel less && systemctl enable httpd.service 7RUN yum install -y --enablerepo=remi,remi-php70 php71 php71-php php71-php-mbstring php71-php-mcrypt php71-php-pdo php71-php-common php71-php-pecl-memcache php71-php-pecl-memcached php71-php-mysqlnd php71-php-cli php71-php-pear php71-php-gd php71-php-pecl-imagick 8RUN php71-pear install Log 9RUN rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 10RUN yum install -y mysql-community-client 11RUN usermod -u 1000 apache && groupmod -g 1000 apache 12 13CMD ["/sbin/init"]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

いっそ、コンテナの Apache を root で動かしてはいかがでしょうか

Git もそうですし、Docker も root で動作させることを前提とするような設計になっており、
ホストは複数ユーザーで利用せず、使い捨てる運用が向いているように思います

どうしても本番環境の都合等で権限の設定が必要な場合は、
docker-compose.override.yml というファイルを作り、
ホスト側から Apache が root で動くような conf ファイルを volumes で bind mount したり、
あるいは environment で環境変数で指定したりすれば、
開発環境だけ root で動作させることができます

この場合、本番環境では
docker-compose コマンド実行時に -f オプションで docker-compose.yml ファイルを指定することで
docker-compose.override.yml を読み込まず、 apache 権限で動作させることが実現できます

投稿2020/07/10 05:54

y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問