Docker compose 不执行。sql
Docker compose does not execute .sql
尝试为我的应用程序使用 docker compose,因此使用官方 mysql 图像和我自己的 Dockerfile 来创建我的应用程序图像。我想我的 initdb.sql
在 docker 撰写期间没有执行。
运行 为:
docker-compose up --build
但是我看不到initdb.sql
被执行了
我的 docker 撰写如下:
version: "3"
services:
db:
image: mysql:5.7
restart: always
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: "MYDB"
MYSQL_USER: "myuser"
MYSQL_PASSWORD: "mypassword"
MYSQL_ROOT_PASSWORD: "mypassword"
ports:
- "3306:3306"
expose:
- "3306"
volumes:
- my-db:/var/lib/mysql
- ./sqlinit:/docker-entrypoint-initdb.d/initdb.sql
networks:
vpcbr:
ipv4_address: 10.5.0.6
app:
restart: always
build: .
ports:
- 5000:5000
volumes:
- .:/app
depends_on:
- db
networks:
vpcbr:
ipv4_address: 10.5.0.5
volumes:
my-db:
networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
# gateway: 10.5.0.1
如您所见,我的 initdb.sql
位于此目录 ./sqlinit
中,登录 mysql 容器后,我可以在 /docker-entrypoint-initdb.d/initdb.sql
[=21 中看到此文件=]
但看起来没有执行,因为当我登录到我的应用程序时,我可以看到:
pymysql.err.OperationalError: (1044, "Access denied for user 'myuser'@'%' to database 'MYDB'")
在容器上 mysql
2019-09-15T13:17:59.361447Z 2 [Note] Access denied for user 'myuser'@'%' to database 'MYDB
当然我做错了,我在这里发现了一些类似的问题,但我仍然没有解决我的问题
问题应该出在您映射卷的方式上。您应该将源文件映射到目标文件而不是将源文件夹映射到文件,如下所示:
- ./sqlinit/initdb.sql:/docker-entrypoint-initdb.d/initdb.sql
尝试为我的应用程序使用 docker compose,因此使用官方 mysql 图像和我自己的 Dockerfile 来创建我的应用程序图像。我想我的 initdb.sql
在 docker 撰写期间没有执行。
运行 为:
docker-compose up --build
但是我看不到initdb.sql
被执行了
我的 docker 撰写如下:
version: "3"
services:
db:
image: mysql:5.7
restart: always
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: "MYDB"
MYSQL_USER: "myuser"
MYSQL_PASSWORD: "mypassword"
MYSQL_ROOT_PASSWORD: "mypassword"
ports:
- "3306:3306"
expose:
- "3306"
volumes:
- my-db:/var/lib/mysql
- ./sqlinit:/docker-entrypoint-initdb.d/initdb.sql
networks:
vpcbr:
ipv4_address: 10.5.0.6
app:
restart: always
build: .
ports:
- 5000:5000
volumes:
- .:/app
depends_on:
- db
networks:
vpcbr:
ipv4_address: 10.5.0.5
volumes:
my-db:
networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
# gateway: 10.5.0.1
如您所见,我的 initdb.sql
位于此目录 ./sqlinit
中,登录 mysql 容器后,我可以在 /docker-entrypoint-initdb.d/initdb.sql
[=21 中看到此文件=]
但看起来没有执行,因为当我登录到我的应用程序时,我可以看到:
pymysql.err.OperationalError: (1044, "Access denied for user 'myuser'@'%' to database 'MYDB'")
在容器上 mysql
2019-09-15T13:17:59.361447Z 2 [Note] Access denied for user 'myuser'@'%' to database 'MYDB
当然我做错了,我在这里发现了一些类似的问题,但我仍然没有解决我的问题
问题应该出在您映射卷的方式上。您应该将源文件映射到目标文件而不是将源文件夹映射到文件,如下所示:
- ./sqlinit/initdb.sql:/docker-entrypoint-initdb.d/initdb.sql