I am new to docker, i have created my application and i want to send to another developer but i cant seem to run it running docker.
It says tables dont exist. I have read the docker doc but i dont get it.
The table are not created.
WHAT AM I DOING WRONG?
my dockerfile
FROM php:7.1-apache
RUN docker-php-ext-install pdo pdo_mysql
COPY ./dump.sql /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)
my docker-composer
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
Run Code Online (Sandbox Code Playgroud)
and my dump.sql has
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;
Run Code Online (Sandbox Code Playgroud)
您必须将入口点脚本添加到数据库中。不适用于您的应用程序(我不清楚 dockerfile)。有关更多详细信息,您可以查看此答案。
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
Run Code Online (Sandbox Code Playgroud)
首先检查用户。默认情况下,root 用户已经存在,因此给 mysql_user 一个不同的名称。其次我挂载一个目录,而不是一个文件。我有一个目录dump,其中包含我的dump.sql(也非常基本):
CREATE TABLE paths (
id int(11)
)
Run Code Online (Sandbox Code Playgroud)
树看起来像这样:
docker-compose.yml
dump/
Run Code Online (Sandbox Code Playgroud)
dump/ 包含 dump.sql
在容器启动期间,这是dump/安装在 mysql 容器内的目录。
$ docker-compose up -d
docker exec -it db-mysql bash
Run Code Online (Sandbox Code Playgroud)
Authenticate(可以选择,普通用户的root_user)我用的是普通的:
root@a110fe08e4b6:/# mysql -u testuser -p
Enter password:
Run Code Online (Sandbox Code Playgroud)
检查数据库:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| path |
+--------------------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
使用路径和检查表:
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)
Run Code Online (Sandbox Code Playgroud)
显示路径表中的列:
mysql> show columns from paths;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9643 次 |
| 最近记录: |