如何在docker中执行sql文件?

发布于 2025-01-16 22:01:01 字数 1210 浏览 3 评论 0原文

我有 lamp 项目并尝试在 Docker compose 中运行它。该应用程序正在运行,但与 mysql 没有连接。原因:sql文件没有执行,数据库没有创建。当我进入容器并手动运行 sql 文件时,一切正常。

 version: '3.7'
services:
  
  db:
    build:
      context: ./database
      dockerfile: Dockerfile    
    container_name: data36
    environment:      
      - MYSQL_ROOT_PASSWORD=password123      
      - MYSQL_DATABASE=php_mysql_crud
    volumes:
      - ./database/script.sql:/docker-entrypoint-initdb.d/script.sql
      -  mysqlvol:/var/lib/mysql
    restart: always
    ports:
      - 3306:3306
    networks:
      - app

  php:
    container_name: php8
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www/html/
    ports:
      - 8000:80
    networks:
      - app
    depends_on:
      - db
      
volumes:
 database:
 mysqlvol:

networks:
  app:
    driver: bridge
    


Dockerfile:


FROM mysql:5.7.17

ENV MYSQL_ROOT_PASSWORD password123

COPY script.sql /docker-entrypoint-initdb.d/

RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/

EXPOSE 3306

CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]

如何在容器中执行script.sql???

I have lamp project and try to run it in the Docker compose. The app is working but doesn't have connection with mysql. The reason: sql file does not execute and the database is not created. When I go into the container and run the sql file manualy, then everything works good.

 version: '3.7'
services:
  
  db:
    build:
      context: ./database
      dockerfile: Dockerfile    
    container_name: data36
    environment:      
      - MYSQL_ROOT_PASSWORD=password123      
      - MYSQL_DATABASE=php_mysql_crud
    volumes:
      - ./database/script.sql:/docker-entrypoint-initdb.d/script.sql
      -  mysqlvol:/var/lib/mysql
    restart: always
    ports:
      - 3306:3306
    networks:
      - app

  php:
    container_name: php8
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www/html/
    ports:
      - 8000:80
    networks:
      - app
    depends_on:
      - db
      
volumes:
 database:
 mysqlvol:

networks:
  app:
    driver: bridge
    


Dockerfile:


FROM mysql:5.7.17

ENV MYSQL_ROOT_PASSWORD password123

COPY script.sql /docker-entrypoint-initdb.d/

RUN chown -R mysql:mysql /docker-entrypoint-initdb.d/

EXPOSE 3306

CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]

How can I execute script.sql in container ???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文