简体   繁体   English

每次启动时如何将 Bash 脚本执行到 mysql docker 容器中

[英]How to execute a Bash script into a mysql docker container every time it starts

I need to execute these commands on every startup since it looks to be overwritten every time I set and restart it我需要在每次启动时执行这些命令,因为每次设置并重新启动它时它看起来都会被覆盖

mysql -uroot -padmin;
set global general_log = 1;

I start the docker container with docker-compose for development purposes only and it looks like this.我仅出于开发目的使用 docker-compose 启动 docker 容器,它看起来像这样。

version: "3.8"
services:
  mysql_service:
    container_name: db_container
    build:
        context: .
        dockerfile: ./db/Dockerfile.dev
    # needed for mysql 8+
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    hostname: db
    ports:
      - target: 3306
        published: 3306
        protocol: tcp
        mode: host
    environment:
      - MYSQL_ROOT_PASSWORD=admin
      - MYSQL_DATABASE=example
      - MYSQL_ROOT_HOST=localhost
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - ./db/:/docker-entrypoint-initdb.d/
      - data_volume:/var/lib/mysql/
    cap_add:
      - ALL
      
volumes:
  data_volume:
    driver: local

and the Dockerfile和 Dockerfile

FROM mysql:8.0

COPY ./DevOps/Docker/db/set_logging.sh /usr/local/bin
ENTRYPOINT ["docker-entrypoint.sh", "./usr/local/bin/set_logging.sh"]

However the copy goes through but the script is never executed.然而,副本通过,但脚本从未执行。 Where the script looks like脚本的样子

#!/bin/bash
mysql -uroot -padmin -e "set global general_log = 1"

Any suggestions on getting this command to go through?关于通过 go 获取此命令的任何建议? This is only for development这只是为了开发

In order to tell MYSQL container to run that script once it starts you can either mount the script into the image's /docker-entrypoint-initdb.d folder using docker file, or docker-compose file using bind mount volume.为了告诉 MYSQL 容器在启动后运行该脚本,您可以使用 docker 文件或 docker-compose 文件将脚本安装到映像的/docker-entrypoint-initdb.d文件夹中。

Dockerfile Dockerfile

FROM mysql:8.0
COPY ./DevOps/Docker/db/script.sh /docker-entrypoint-initdb.d/script.sh
ENTRYPOINT ["docker-entrypoint.sh"]

docker-compose docker-compose

version: "3.8"
services:
  mysql_service:
    container_name: db_container
    build:
        context: .
        dockerfile: ./db/Dockerfile.dev
    # needed for mysql 8+
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    hostname: db
    ports:
      - target: 3306
        published: 3306
        protocol: tcp
        mode: host
    environment:
      - MYSQL_ROOT_PASSWORD=admin
      - MYSQL_DATABASE=example
      - MYSQL_ROOT_HOST=localhost
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - "./DevOps/Docker/db/script.sh:/docker-entrypoint-initdb.d/script.sh"  
      - data_volume:/var/lib/mysql/
    cap_add:
      - ALL
      
volumes:
  data_volume:
    driver: local

You can check how scripts are launched in /docker-entrypoint-initdb.d read the Initializing a fresh instance Section您可以检查脚本是如何在/docker-entrypoint-initdb.d中启动的,请阅读初始化新实例部分

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 借助 docker 容器中的 Bash 脚本执行命令 - Execute command thanks to a Bash script in a docker container Docker-如何更改Docker Compose文件以自动化MySQL容器的bash脚本? - Docker - how to alter my Docker Compose file to automate a bash script for the MySQL container? 每次在docker容器中,mysql连接主机都会更改,为什么? - Mysql connect host change every time in the docker container,why? 如何将启动脚本添加到mysql docker容器? - How to add a startup script to a mysql docker container? 创建 docker 容器,执行脚本并删除容器 - Create docker container, execute a script and delete the container 如何从主机执行mysqldump命令到mysql docker容器 - How to execute mysqldump command from the host machine to a mysql docker container 如何在一个脚本中同时执行 MySQL 查询和 bash 命令? - How to execute MySQL query and bash command together in one script? 如何在MySQL Docker映像中使用脚本执行查询? - How to execute query using script in MySQL Docker image? 如何从Docker容器中的python脚本连接到localhost上的mysql数据库 - How to connect to a mysql database on localhost from a python script in a docker container 如何将 docker 容器上的 php 脚本与网络主机连接,同时在网络主机上使用 mysql Z05B6053C41A2130AFD68BDAB3E 容器 - How connect a php script on docker container with network host, with a mysql docker container also on network host
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM