mysql - docker mysql容器启动后退出

标签 mysql docker

我正在尝试使用初始化脚本启动 docker MySQL 容器。我的 Dockerfile 如下所示:

FROM node:11
WORKDIR /usr/src/app
COPY ./init.sql /docker-entrypoint-initdb.d/
COPY . .
RUN npm install
ENV PORT=8000
EXPOSE ${PORT}
CMD [ "npm", "start" ]

我的 init.sql 文件位于两个位置,主目录以及 docker-entrypoint-initdb.d/文件夹。 init.sql 文件只有 create table 和 insert 语句。我按以下顺序运行 Docker 命令:

//start network
docker network create --driver bridge mysql-net

//launch docker mysql container with init script to create tables & data
docker run -d --name mysql-server --network mysql-net -p 3306:3306 -e "MYSQL_ROOT_PASSWORD=rootpassword" -e "MYSQL_DATABASE=yelplikeapp" -e "MYSQL_USER=yelplikeapp" -e "MYSQL_PASSWORD=hunter2" -v "/c/Users/marti/Documents/projectFolder:/docker-entrypoint-initdb.d" mysql:5

启动 mysql-server 容器最初可以工作,但几秒钟后,当我运行“docker ps -a”时,我可以看到它一启动就退出:

enter image description here

为什么我的 mysql-server 容器退出?我一直在尝试进入容器并查看数据库以验证所有表是否已成功创建。但我在这样做时遇到了困难,并认为这就是问题的根源。

为了透明起见,我将发布完整的 init.sql 文件: 当我检查 mysql-server 的日志时,有一条错误消息: 第 1 行出现错误 1050 (42S01):表“用户”已存在

drop database yelplikeapp;
create database yelplikeapp;
use yelplikeapp;

SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS users;
DROP TABLE IF EXISTS businesses;
DROP TABLE IF EXISTS photos;
DROP TABLE IF EXISTS reviews;
SET FOREIGN_KEY_CHECKS = 1;

CREATE TABLE users (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  username VARCHAR(255) NOT NULL,  
  PRIMARY KEY (id)
);

INSERT INTO users(id, username) VALUES 
( NULL, 'brungoTungis' ),
( NULL, 'kramer' ),
( NULL, 'elaine');

CREATE TABLE businesses (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  ownerid MEDIUMINT NOT NULL,
  name VARCHAR(255) NOT NULL,
  address VARCHAR(255) NOT NULL,
  city VARCHAR(255) NOT NULL,
  state VARCHAR(255) NOT NULL,
  zip VARCHAR(255) NOT NULL,
  phone VARCHAR(255) NOT NULL,
  category VARCHAR(255) NOT NULL,
  subcategory VARCHAR(255) NOT NULL,
  website VARCHAR(255),
  email VARCHAR(255),
  PRIMARY KEY (id),
  FOREIGN KEY (ownerid) REFERENCES users(id) ON DELETE CASCADE
);

INSERT INTO businesses(id, ownerid, name, address, city, state, zip, phone, category, subcategory, website, email) VALUES ( NULL, 1, 'taco bell', '1157th ave nw', 'corvallis', 'or', '98023', '423-232-1313', 'fastfood', 'mexican', 'www.tacobell.com', 'tacobell@gmail.gov' ), ( NULL,  1, 'kfc', '1158th ave nw', 'seattle', 'wa', '98223', '423-232-993', 'fastfood', 'chicken', NULL, NULL );

CREATE TABLE photos (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  userid MEDIUMINT NOT NULL,
  businessid MEDIUMINT NOT NULL,
  caption VARCHAR(255),
  PRIMARY KEY (id),
  FOREIGN KEY (userid) REFERENCES users(id),
  FOREIGN KEY (businessid) REFERENCES businesses(id) ON DELETE CASCADE
);

INSERT INTO photos(id, userid, businessid, caption) VALUES 
( NULL, 2, 1, 'coolcaption' ),
( NULL, 3, 2, NULL ),
( NULL, 3, 1, 'badcaption');

CREATE TABLE reviews (
  id MEDIUMINT NOT NULL AUTO_INCREMENT,
  userid MEDIUMINT NOT NULL,
  businessid MEDIUMINT NOT NULL,
  dollars MEDIUMINT NOT NULL,
  stars MEDIUMINT NOT NULL,
  review VARCHAR(255),
  PRIMARY KEY (id),
  FOREIGN KEY (userid) REFERENCES users(id),
  FOREIGN KEY (businessid) REFERENCES businesses(id)
);

INSERT INTO reviews(id, userid, businessid, dollars, stars, review) VALUES 
( NULL, 2, 1, 2, 3, 'mycoolreview' ), ( NULL, 1, 2, 2, 3, NULL );

最佳答案

解决了这个问题,我从 dockerfile 中删除了复制语句,还删除了 init.sql 文件。我的项目文件中有两个,一个在我的 homeRepo/init.sql 和 homeRepo/docker-entrypoint-initdb 中.d/

我删除了 homeRepo/init.sql 文件,重新运行了我的 docker mysql-server 创建,并且它起作用了

关于mysql - docker mysql容器启动后退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56012181/

相关文章:

mysql - 在获取数据时用多列中的空字符串替换空值

docker - 关闭 Docker 从父文件公开端口

docker - "-Bbn"在 Docker 中意味着什么?

docker stack rm 后跟 deploy 失败并在连续构建上运行

docker - 如何监控队列)并将数据从 Nifi 发送到 prometheus?

python - 如何在 python 中使用日期范围在 mySQL 中拉取/查询数据

php - 为什么我的 header 中的 Jquery 会阻止我的 PHP 代码工作?

mysql - 数据库关系 - 多对多

php - 从 MySQL 数据库中提取哈希用户名

docker - 如何删除 docker 镜像中的配置卷