Docker构建卡在MariaDB安装上

时间:2018-11-28 15:03:12

标签: docker docker-compose mariadb magento2

我正在尝试构建一组Docker映像,其中包括Magento 2和MariaDB的安装。在极少数情况下,它会成功(尽管这可能是由于应用程序的微小更改所致),但在大多数情况下,它会卡在以下内容上:

magento2-db    | Version: '10.3.11-MariaDB-1:10.3.11+maria~bionic'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution

我看到其他人遇到了这个问题,但是原因是用于MariaDB安装的实际RUN命令,我没有直接调用。日志中似乎也没有任何内容指示错误。

日志中的最后几行是:

[16:49:18.424][Moby           ][Info   ] [25693.252573] br-83922f7da47b: port 2(vethac51834) entered blocking state
[16:49:18.453][Moby           ][Info   ] [25693.290035] br-83922f7da47b: port 2(vethac51834) entered forwarding state
[16:49:18.637][ApiProxy       ][Info   ] time="2018-11-28T16:49:18+02:00" msg="proxy << POST /v1.25/containers/67175238f0e7a75ef527dbebbb1f5d992f1d01ee166643186dc5f727638aa66b/start (1.0560013s)\n"
[16:49:18.645][ApiProxy       ][Info   ] time="2018-11-28T16:49:18+02:00" msg="proxy >> GET /v1.25/events?filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dmagento2%22%2C+%22com.docker.compose.oneoff%3DFalse%22%5D%7D\n"

似乎实际上已经完成了Dockerfile中的所有步骤,但是我怀疑我的docker-compose文件中可能存在问题,如下所示:

version: '3.0'
services:
  app:
    build:
      context: .
      dockerfile: .docker/Dockerfile
    container_name: 'magento-2.2.6'
    ports:
      - "80:80"
    volumes:
      - magento2-test-env:/var/www/html/magento2 # will be mounted on /var/www/html
    links:
      - magento2-db
    env_file:
      - .docker/env
    depends_on:
      - magento2-db
  magento2-db:
    container_name: 'magento2-db'
    image: mariadb:latest
    ports:
      - "9809:3306"
    volumes:
      - magento2-db-data:/var/lib/mysql/data
    env_file:
      - .docker/env
volumes:
  magento2-db-data:
  magento2-test-env:
    external: true

我的设置是否明显有问题,并且有解决此问题的好方法,也许是在日志中查找特定的内容?

2 个答案:

答案 0 :(得分:0)

也许是您构建作曲家的方式出了什么问题。

尝试使用这个:

version: '3.0'
services:
  app:
    build:
      context: .
      dockerfile: .docker/Dockerfile
    container_name: 'magento-2.2.6'
    ports:
      - "80:80"
    volumes:
      - magento2-test-env:/var/www/html/magento2 # will be mounted on /var/www/html
    links:
      - magento2-db
    env_file:
      - .docker/env
    depends_on:
      - db
  db:
    container_name: 'magento2-db'
    image: mariadb:latest
    ports:
      - "9809:3306"
    volumes:
      - /var/lib/mysql/data
    env_file:
      - .docker/env
volumes:
  magento2-db-data:
  magento2-test-env:
    external: true

如果需要将名称用作container_name,则避免使用“ blabla-something”之类的服务名称,这样就足够了,db, links始终应在服务本身中链接而不是容器名称中的链接。 / p>

希望这对您有所帮助。

答案 1 :(得分:0)

尝试设置-e MYSQL_INITDB_SKIP_TZINFO=1,参考this问题。

例如

docker run -it --rm -e MYSQL_INITDB_SKIP_TZINFO=1 ... mariadb:10.4.8