質問するログイン新規登録

回答編集履歴

1

プロセスの実行ユーザIDの問題として回答に追記

2020/04/13 01:42

投稿

mit0223
mit0223

スコア3401

answer CHANGED
@@ -1,4 +1,4 @@
1
- コードがタグ付けされてないのと docker のバージョンも書かれていなかったりして、非常に回答しづらいのですが、おそらく、docker-compose.yml の
1
+ おそらく、docker-compose.yml の
2
2
  ```yml
3
3
  volumes:
4
4
  - api_socket:/run:z
@@ -11,4 +11,19 @@
11
11
  ただし、そういう問題だと  docker-compose 時にエラーになりそうです。/run は起動ごとに初期化されても問題ないディレクトリのはずなので、以下に変えてみてはどうでししょう。
12
12
  ```yml
13
13
  tmpfs: /run
14
+ ```
15
+
16
+ ---------
17
+ 2020/4/13 go.sock に直接パーミッション 777 と変更すれば、動作するということですので、全面的に回答を見直します。
18
+
19
+ nginx のワーカプロセスはコンテナ内でもユーザID nginx で動作します。したがって、/run/go.socket がgolang 側の root ユーザで作成されていると Permission denied のエラーになります。
20
+ Dockerfile で /etc/nginx/nginx.conf の user ディレクティブの値を以下のように変更(COPY で修正済みのものを配置か sed -i で編集)すれば回避できるのではないでしょうか?
21
+
22
+ 修正前 /etc/nginx/nginx.conf:
23
+ ```
24
+ user nginx;
25
+ ```
26
+ 修正後 /etc/nginx/nginx.conf:
27
+ ```
28
+ user root;
14
29
  ```