

### 前提

docker-composeでlaravelの環境を立ち上げようとしているのですが、mysqlのコンテナが起動後すぐに`exited (1)`
になってしまいます。

3日前くらいまでは起動していたのですが、急に正しい動作しなくなってしまいました。

### 実現したいこと

  * docker-composeでmysqlコンテナの起動がしたいです

### 発生している問題・エラーメッセージ

  * `docker-compose up- d` で起動をすると、mysqlコンテナのみすぐに`exited (1)` になってしまいます

[code]

    ❯ docker-compose ps
    NAME                COMMAND                  SERVICE             STATUS              PORTS
    mysql_fargate       "docker-entrypoint.s…"   db                  exited (1)
    nginx_fargate       "/docker-entrypoint.…"   web                 running             0.0.0.0:80->80/tcp
    php_fargate         "docker-php-entrypoi…"   app                 running             9000/tcp
    
[/code]

  * ` docker-compose logs db`でログを見ると以下のようなエラーがでています。

[code]

    mysql_fargate  | chown: changing ownership of './proc/94/task/96': Operation not permitted
    mysql_fargate  | chown: cannot access './proc/94/task/96/fd/4': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fd/5': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fd/6': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fd/7': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fd/8': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fd/9': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fdinfo/4': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fdinfo/5': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fdinfo/6': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fdinfo/7': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fdinfo/8': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/task/96/fdinfo/9': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/fd/4': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/fd/5': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/fd/6': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/fd/7': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/fdinfo/4': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/fdinfo/5': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/fdinfo/6': No such file or directory
    mysql_fargate  | chown: cannot access './proc/94/fdinfo/7': No such file or directory
    
[/code]

権限周りの知識がなくご教授いただければ幸いです。

### 該当のソースコード

  * mysql/Dockerfile ↓

[code]

    FROM --platform=linux/amd64 mysql:8.0
    
    COPY ./docker/mysql/my.cnf /etc/my.cnf
    
[/code]

  * php/Dockerfile ↓

[code]

    FROM php:8.0-fpm
    
    # COPY php.ini
    COPY ./docker/php/php.ini /usr/local/etc/php/php.ini
    
    # Composer install
    COPY --from=composer:2.0 /usr/bin/composer /usr/bin/composer
    
    # install Node.js
    COPY --from=node:lts /usr/local/bin /usr/local/bin
    COPY --from=node:lts /usr/local/lib /usr/local/lib
    
    RUN apt-get update && \
        apt-get -y install \
        git \
        zip \
        unzip \
        vim \
        && docker-php-ext-install pdo_mysql bcmath
    
    WORKDIR /var/www/html
    
[/code]

  * nginx/Dockerfile ↓

[code]

    FROM nginx:1.18-alpine
    
    ENV TZ Asia/Tokyo
    
    # nginx config file
    COPY ./docker/nginx/*.conf /etc/nginx/conf.d/
    
    WORKDIR /var/www/html
    
[/code]

  * docker-compose.yml↓

[code]

    version: '3.3'
    
    services:
      app:
        build:
          context: .
          dockerfile: ./docker/php/Dockerfile
        container_name: php_fargate
        volumes:
          - ./src/:/var/www/html
        environment:
          - DB_CONNECTION=mysql
          - DB_HOST=db
          - DB_PORT=3306
          - DB_DATABASE=${DB_NAME}
          - DB_USERNAME=${DB_USER}
          - DB_PASSWORD=${DB_PASSWORD}
          - "TZ=Asia/Tokyo"
    
      web:
        build:
          context: .
          dockerfile: ./docker/nginx/Dockerfile
        container_name: nginx_fargate
        ports:
          - ${WEB_PORT}:80
        depends_on:
          - app
        volumes:
          - ./src/:/var/www/html
    
      db:
        build:
          context: .
          dockerfile: ./docker/mysql/Dockerfile
        container_name: mysql_fargate
        ports:
          - ${DB_PORT}:3306
        environment:
          MYSQL_DATABASE: ${DB_NAME}
          MYSQL_USER: ${DB_USER}
          MYSQL_PASSWORD: ${DB_PASSWORD}
          MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
          TZ: 'Asia/Tokyo'
        volumes:
          - mysql-volume:/var/lib/mysql
    
    volumes:
      mysql-volume:
    
[/code]

### 試したこと

  * docker system prune -aやvolumeの削除
  * docker image, docker container の削除
  * portの変更
  * docker descktopでメモリの増加
  * 他のコードでも試したのですが、うまく起動していないです

### 補足情報（FW/ツールのバージョンなど）

  * Apple M1 Pro
  * Laravel Framework 9.26.1
  * node v16.17.0


CC BY-SA 4.0
2022-08-24T10:39:28.957
90732
2023-06-29T10:11:46.980
54137
question
mysql docker docker-compose docker-for-mac
Dockerでmysqlコンテナが起動後すぐにexited (1)になってしまう


mysql/Dockerfile から以下の行をコメントアウトして、my.cnf の設定は別の方法で実現させる工夫をしてください。

[code]

    COPY ./docker/mysql/my.cnf /etc/my.cnf
    
[/code]

ホストOSの設定に変更があったのか、my.cnfのCOPYを行う権限がなくなっていて、それを得るために（だめなんですけど）`chown`
とかを実行しに行って結局ハネられているようです。


CC BY-SA 4.0
2022-09-12T23:51:33.593
91069
2022-09-13T01:13:58.107
2022-09-13T01:13:58.107
3060
999
90732
answer


自分も最近、MySQLのイメージを8.0.30から8.0.31に変更した際に同様の問題が発生しました。  
どうやら原因はentrypointに`chown`の処理が追加された為でした。  
<https://github.com/docker-library/mysql/pull/797>

これを見る限りログ系のファイルパスに相対パスを指定すると、意図しないディレクトリに対して`chown`を実行しようとしてしまうようです。  
ですので、my.cnfで相対パスを指定しているようでしたら、絶対パスに置き換えてやることで回避が可能です。


CC BY-SA 4.0
2022-12-14T10:45:17.757
92782
2022-12-14T10:45:17.757
55976
90732
answer