Docker compose 不执行。sql

Docker compose does not execute .sql

尝试为我的应用程序使用 docker compose,因此使用官方 mysql 图像和我自己的 Dockerfile 来创建我的应用程序图像。我想我的 initdb.sql 在 docker 撰写期间没有执行。

运行 为:

docker-compose up --build

但是我看不到initdb.sql被执行了

我的 docker 撰写如下:

version: "3"
services:
  db:
    image: mysql:5.7
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_DATABASE: "MYDB"
      MYSQL_USER: "myuser"
      MYSQL_PASSWORD: "mypassword"
      MYSQL_ROOT_PASSWORD: "mypassword"
    ports:
      - "3306:3306"
    expose:
      - "3306"
    volumes:
      - my-db:/var/lib/mysql
      - ./sqlinit:/docker-entrypoint-initdb.d/initdb.sql
    networks:
      vpcbr:
        ipv4_address: 10.5.0.6
  app:
    restart: always
    build: .
    ports:
      - 5000:5000
    volumes:
      - .:/app
    depends_on:
      - db
    networks:
      vpcbr:
        ipv4_address: 10.5.0.5

volumes:
  my-db:

networks:
  vpcbr:
    driver: bridge
    ipam:
      config:
        - subnet: 10.5.0.0/16
        #  gateway: 10.5.0.1

如您所见,我的 initdb.sql 位于此目录 ./sqlinit 中,登录 mysql 容器后,我可以在 /docker-entrypoint-initdb.d/initdb.sql[=21 中看到此文件=]

但看起来没有执行,因为当我登录到我的应用程序时,我可以看到:

pymysql.err.OperationalError: (1044, "Access denied for user 'myuser'@'%' to database 'MYDB'")

在容器上 mysql

2019-09-15T13:17:59.361447Z 2 [Note] Access denied for user 'myuser'@'%' to database 'MYDB

当然我做错了,我在这里发现了一些类似的问题,但我仍然没有解决我的问题

问题应该出在您映射卷的方式上。您应该将源文件映射到目标文件而不是将源文件夹映射到文件,如下所示:

- ./sqlinit/initdb.sql:/docker-entrypoint-initdb.d/initdb.sql