我正在尝试构建一组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
我的设置是否明显有问题,并且有解决此问题的好方法,也许是在日志中查找特定的内容?
答案 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