我正在尝试设置一个mysql docker容器并执行init sql脚本。不幸的是SQL脚本没有执行。我究竟做错了什么?
version: '3.3'
services:
api:
container_name: 'api'
build: './api'
ports:
- target: 8080
published: 8888
protocol: tcp
mode: host
volumes:
- './api:/go/src/app'
depends_on:
- 'mysql'
mysql:
image: 'mysql:latest'
container_name: 'mysql'
volumes:
- ./db_data:/var/lib/mysql:rw
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
restart: always
environment:
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
ports:
- '3306:3306'
volumes:
db_data:
我执行文件 docker-compose up -d --build
许多容器化的应用程序,尤其是有状态的应用程序,都有一种运行init
脚本的方式(例如此处的sql脚本), 并且 它们只能运行 一次 。
并且由于它们是有状态的,因此对于容器是否init
在容器重新启动时运行脚本而言,卷是事实的来源。
与您的情况类似,删除用于绑定安装的文件夹或使用新的命名卷应重新运行init
存在的所有脚本。
我有以下DockerFile: 这是什么意思:switch的值丢失了,我如何运行它?谢谢你的帮助 更新 请参阅此处:docker ASP.NET核心容器在mysql容器之后启动以获取更多信息。很抱歉有类似的第二个线程。请删除此线程
我试图让我的docker db容器在创建时自动用数据集填充数据库。根据mariadb留档,卷中有一个文件夹可用于此目的。 我设置了我的文件来镜像我在StackOverflow上找到的示例,但是仍然无法执行我的SQL脚本。以下是我的文件的相关部分: 在文件,我有一个文件: 在每次测试迭代之前,我会清理所有旧的/缓存的Docker内容: 我发现这实际上并没有删除数据库卷。运行仍会显示过去存在的卷 Do
问题内容: 我正在尝试在MySQL容器启动时创建多个数据库。根据https://github.com/docker- library/mysql/pull/18 ,我可以在映像的中装载或复制脚本,它们将在启动时自动执行。 但是我的脚本根本没有执行。好像在目录中看不到文件。 这是我的Dockerfile: 这是我的: 我构建并运行容器: 当我在tty中访问容器时,可以看到处于,但未执行。 我看到了输
我正在尝试为elasticsearch 1.7运行docker容器。下面是我的Dockerfile: Docker build运行良好。但是docker run命令给了我这个错误:来自守护进程的错误响应:oci运行时错误:container\u linux。go:265:启动容器进程导致“exec:\“elasticsearch\”:在$PATH中找不到可执行文件” 我使用的Mac和Docker版
我已经检查了垃圾箱,里面没有ping
我对Docker完全是个新手。我尝试像下面这样启动一个已退出的容器, > 我使用列出了所有可用的容器。它列举了以下内容: 我输入以下命令来启动处于退出阶段的容器,并进入该映像的终端。