0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

docker-compose up -dしたらservices.db Additional property dockerfile is not allowedと出たので対策した

Posted at

docker上でphpとsqlコンテナを立ち上げるべく下記のコードを設定。

docker/docker-compose.yml
version:"3"
services:
  app:
    build:
      context:
      dokerfile: docker/app/Dockerfile
    volumes:
    -./src:/var/www/html
    ports:
    -"50090:90"
    depends_on:
     -db
        
  db:
    image: mysql:8.3
    ports:
        - "53306:3306"
    dokerfile: docker/db/Dockerfile
    volumes:
    - ./docker/db/my.cnf:/etc/mysql/my.cnf
    env_file:
    - ./docker/db/db-variables.env 

$ docker-compose up -d --buildしたらエラーをいくつか吐いた。

⚫︎その1

yaml: line 2: mapping values are not allowed in this context

2行目のmapping値が読み込めない。
→1行目のversion:と"3"の間にスペースがないせいでバージョンの識別が出来ず。
原因:書き方間違い

⚫︎その2

yaml: line 8: could not find expected ':'

8行目に:が見つからない。
→-と./src~の間にスペースがないせいでディレクトリを識別できず。
原因:書き方間違い

⚫︎その3

service volume services.app.volumes.[0] is missing a mount target

マウントポイントが見つからない。
→dockerfileと記載するところをdokerfileと記していた。
原因:スペルミス

⚫︎その4

services.db Additional property dockerfile is not allowed

db内のdockerfileが不明なファイルとして認識されている。
→buildの中にdockerfileを記載するところ、buildの記載がなかった。imageかbuildのどちらかに絞ればよかった。

ちなみにdb/Dockerfileとdb/my.cnfにはそれぞれ

db/Dockerfile.
FROM mysql:8.3
ENV LANG ja\_JP.UTF-8
EXPOSE 3306
CMD ["mysqld"]
db/my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

[client]
default-caracter-set=utf8mb4

と記載。
ymlとcnfにポート番号や言語・照合条件を記載しているので、このdb/Dockerfileは不要だったなと。

以上を踏まえて、
db/Dockerfileを削除してコードを下記のように修正。

docker-compose.yml
version: "3"
services:
  app:
    build:
      context: .
      dockerfile: docker/app/Dockerfile
    volumes:
    - ./src:/var/www/html
    ports:
    - "50090:90"
    depends_on:
     - db
        
  db:
    image: mysql:8.3
    volumes:
    - ./docker/db/my.cnf:/etc/mysql/my.cnf
    ports:
        - "53306:3306"
    env_file:
    - ./docker/db/db-variables.env

buildしたところ

$ docker-compose ps

NAME        IMAGE     COMMAND                   SERVICE   CREATED         STATUS         PORTS
msr-app-1   msr-app   "docker-php-entrypoi…"   app       8 minutes ago   Up 8 minutes   80/tcp, 0.0.0.0:50090->90/tcp


$ docker container ls -a
CONTAINER ID   IMAGE         COMMAND                   CREATED          STATUS                      PORTS                           NAMES
1f8090e3e954   msr-app       "docker-php-entrypoi…"   28 seconds ago   Up 27 seconds               80/tcp, 0.0.0.0:50090->90/tcp   msr-app-1
9f474e442fee   msr-db        "docker-entrypoint.s…"   28 seconds ago   Exited (1) 19 seconds ago                                   msr-db-1

appは無事に起動。dbがExited(1)で、エラー吐いている。
$ docker logs 9f474e442fee
すると

mysqladmin: [ERROR] unknown variable 'default-caracter-set=utf8mb4'.
2024-04-12 01:59:16+00:00 [ERROR] [Entrypoint]: Unable to shut down server.

caracterって何やねん。my.cnfを修正してbuildしなおしたら

CONTAINER ID   IMAGE         COMMAND                   CREATED         STATUS                  PORTS                                NAMES
0b98ab337f76   msr-app       "docker-php-entrypoi…"   9 seconds ago   Up 8 seconds            80/tcp, 0.0.0.0:50090->90/tcp        msr-app-1
de9fe0f5f774   mysql:8.3     "docker-entrypoint.s…"   9 seconds ago   Up 8 seconds            33060/tcp, 0.0.0.0:53306->3306/tcp   msr-db-1
7f46bbe6df00   hello-world   "/hello"                  3 days ago      Exited (0) 3 days ago                                        frosty_tu

晴れてコンテナが起動。
dockerのimageとcontainerの理解がまた一歩深まりました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?