首页 > 解决方案 > docker-compose 在构建过程中无法连接到容器

问题描述

我尝试设置一个 Shopware Docker 容器进行开发。我为 Shopware 初始化过程设置了一个 Dockerfile,但是每次我运行构建过程 shopware 时都会返回此错误消息:

mysql -u 'root' -p'root' -h 'dbs' --port='3306' -e "DROP DATABASE IF EXISTS `shopware6dev`" 错误 2005 (HY000): 未知的 MySQL 服务器主机 'dbs' (-2 )

我认为docker在所有构建过程完成后设置默认网络,但我需要在所有容器准备好之前连接。depends_on 选项什么也没带来。我希望任何人都有解决这个问题的想法。

这是我的 docker-compose 文件:

version: '3'

services:
shopwaredev:
    build:
        context: ./docker/web
        dockerfile: Dockerfile
    volumes:
        - ./log:/var/log/apache2
    environment:
        - VIRTUAL_HOST=shopware6dev.test,www.shopware6dev.test
        - HTTPS_METHOD=noredirect
    restart: on-failure:10
    depends_on:
        - dbs
adminer:
    image: adminer
    restart: on-failure:10
    ports:
        - 8080:8080
dbs:
    image: "mysql:5.7"
    volumes:
        - ./mysql57:/var/lib/mysql
    environment:
        - MYSQL_ROOT_PASSWORD=root
        - MYSQL_DATABASE=shopware6dev
    restart: on-failure:10
nginx-proxy:
    image: solution360/nginx-proxy
    ports:
        - "80:80"
        - "443:443"
    volumes:
        - /var/run/docker.sock:/tmp/docker.sock:ro
        - ./ssl:/etc/nginx/certs
    restart: on-failure:10

这是我用于 web shopwaredev 容器的 dockerfile:

FROM solution360/apache24-php74-shopware6
WORKDIR /var/www/html

RUN rm index.html

RUN git clone https://github.com/shopware/development.git .

RUN cp .psh.yaml.dist .psh.yaml

RUN sed -i 's|DB_USER: "app"|DB_USER: "root"|g' .psh.yaml
RUN sed -i 's|DB_PASSWORD: "app"|DB_PASSWORD: "root"|g' .psh.yaml
RUN sed -i 's|DB_HOST: "mysql"|DB_HOST: "dbs"|g' .psh.yaml
RUN sed -i 's|DB_NAME: "shopware"|DB_NAME: "shopware6dev"|g' .psh.yaml
RUN sed -i 's|APP_URL: "http://localhost:8000"|APP_URL: "http://shopware6dev.test"|g' .psh.yaml

RUN ./psh.phar install

标签: dockerdocker-composedockerfile

解决方案


推荐阅读