我是docker的新手,我创建了我的应用程序,我想发送给另一个开发人员,但我似乎无法运行它运行docker。
它说表不存在。我已经阅读过docker doc但是我没理解。
未创建表格。
我做错了什么?
我的dockerfile
FROM php:7.1-apache
RUN docker-php-ext-install pdo pdo_mysql
COPY ./dump.sql /docker-entrypoint-initdb.d/
我的码头作曲家
version: '2'
volumes:
logs:
driver: local
services:
slim:
build: .
working_dir: /var/www
command: php -S 0.0.0.0:8080 -t public
environment:
docker: "true"
depends_on:
- db-mysql
ports:
- 80:8080
volumes:
- .:/var/www
- logs:/var/www/logs
links:
- db-mysql
db-mysql:
image: mysql
restart: always
container_name: db-mysql
ports:
- "3307:3306"
environment:
MYSQL_DATABASE: path
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: root
volumes:
- ./mysql_init:/docker-entrypoint-initdb.d
- ./dump.sql:/docker-entrypoint-initdb.d
我的dump.sql有
CREATE TABLE IF NOT EXIST `paths` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`lat` double DEFAULT NULL,
`long` double DEFAULT NULL,
`token` varchar(225) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1;
答案 0 :(得分:1)
您必须将入口点脚本添加到数据库中。不是你的应用程序(dockerfile对我来说不明确)。有关详细信息,请查看此answer。
docker-compose.yml(基本没有持久性)
version: '3.1'
services:
mysql:
image: mysql
restart: always
container_name: db-mysql
ports:
- 3307:3306
environment:
MYSQL_DATABASE: path
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: testuser
MYSQL_PASSWORD: testpassword
volumes:
- ./dump:/docker-entrypoint-initdb.d
首先检查用户。默认情况下,root用户已存在,因此请为mysql_user指定其他名称。其次我挂载了一个目录,而不是一个文件。我有一个dump
目录,其中包含dump.sql
(非常基本):
CREATE TABLE paths (
id int(11)
)
树看起来像这样:
docker-compose.yml
dump/
dump/
包含dump.sql
在容器启动期间,这是安装在mysql容器内的dump/
目录。
$ docker-compose up -d
docker exec -it db-mysql bash
验证(您可以选择普通用户的root_user)我使用正常的:
root@a110fe08e4b6:/# mysql -utestuser -p
Enter password:
检查数据库:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| path |
+--------------------+
2 rows in set (0.00 sec)
使用路径和检查表:
mysql> use path;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+----------------+
| Tables_in_path |
+----------------+
| paths |
+----------------+
1 row in set (0.00 sec)
显示路径表中的列:
mysql> show columns from paths;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)