簡體   English   中英

當容器從另一個容器中啟動時,docker-entrypoint-initdb.d 為空

[英]docker-entrypoint-initdb.d is empty when container is started from within another container

我有一個目錄結構,如 -

- Dockerfile
- docker-compose.yml
- db
  - schema.sql

每個文件的內容是 -

Dockerfile -

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 -

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 -

create database if not exists db2;

當我做 -

docker-compose up --build --remove-orphans

它的行為符合預期,我在test_mysql_v1容器中得到了一個名為db2的數據庫。

但是,當我這樣做時 -

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目錄為空(未創建數據庫)。

有人可以幫助如何完成這項工作嗎?

最終結果應該是 - 當我從dfd_1容器內部向上運行docker-compose 時,它應該創建一個 mysql 容器,其中db 已經創建

補充說明 -

  1. 為了降低 mysql 容器,我使用 - docker-compose down

  2. 我的猜測是當我執行docker run -v /var/run/docker.sock:/var/run/docker.sock...時,我需要另一個卷掛載以便docker-compose.yml (在dfd_1內)可以將db復制到docker-entrypoint-initdb.d正確。

  3. 從 docker 日志中一無所獲。

任何幫助表示贊賞。 謝謝。

通過將主機目錄上的路徑傳遞給其中的容器來實現它。

docker 運行命令更改為 -

docker run -v /var/run/docker.sock:/var/run/docker.sock -e HOST_DIR=$PWD -it dfd_1 sh

docker-compose.yml (映射卷時使用HOST_DIR 環境變量)為 -

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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM