首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当容器从另一个容器中启动时,docker-entrypoint initdb.d为空。

当容器从另一个容器中启动时,docker-entrypoint initdb.d为空。
EN

Stack Overflow用户
提问于 2020-08-13 17:00:16
回答 1查看 606关注 0票数 1

我有一个目录结构类似-

代码语言:javascript
复制
- Dockerfile
- docker-compose.yml
- db
  - schema.sql

而每个档案的内容是-

Dockerfile

代码语言:javascript
复制
FROM alpine:3.7

RUN apk update && \
    apk add --no-cache docker python3 && \
    apk add --no-cache --virtual .docker-compose-deps python3-dev libffi-dev openssl-dev gcc libc-dev make && \
    pip3 install docker-compose && \
    apk del .docker-compose-deps

ADD . .

docker-compose.yml -

代码语言:javascript
复制
version: "2"

services:

  test_mysql:
    image: "mysql:5.7"
    container_name: test_mysql_v1
    volumes:
      - ./db:/docker-entrypoint-initdb.d/
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
      - "3310:3306"

schema.sql -

代码语言:javascript
复制
create database if not exists db2;

当我做的时候-

代码语言:javascript
复制
docker-compose up --build --remove-orphans

它的行为是预期的,我在test_mysql_v1容器中得到一个名为test_mysql_v1的db。

但是,当我这么做-

代码语言:javascript
复制
1. docker build -t dfd_1 .

2. docker run -v /var/run/docker.sock:/var/run/docker.sock -it dfd_1 sh

from inside -

3. docker-compose up  --build --remove-orphans

然后在新创建的test_mysql_v1容器中,docker-entrypoint-initdb.d目录为空(未创建db )。

谁能帮我把这件事做好吗?

最终结果应该是--当我从dfd_1容器内部运行docker时,它应该使用db已经创建的创建一个mysql容器。

附加注释-

我使用- docker-compose down来降低mysql容器的

  1. 我的猜测是,当我做docker run -v /var/run/docker.sock:/var/run/docker.sock ...时,我需要另一个卷装入,这样docker-compose.yml (在dfd_1中)就可以正确地将db复制到docker-entrypoint-initdb.d。

  1. 从码头日志中一无所获。

任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-08-16 12:09:13

通过将主机目录上的路径传递给内部的容器来实现。

更改后的停靠程序运行命令-

代码语言:javascript
复制
docker run -v /var/run/docker.sock:/var/run/docker.sock -e HOST_DIR=$PWD -it dfd_1 sh

docker-compose.yml (在映射卷时使用HOST_DIR env变量)作为-

代码语言:javascript
复制
version: "2"

services:

  test_mysql:
    image: "mysql:5.7"
    container_name: test_mysql_v1
    volumes:
      - ${HOST_DIR}/db:/docker-entrypoint-initdb.d/
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
      - "3310:3306"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63399913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档