在码头集装箱内运行码头集装箱

62o28rlo  于 2022-10-04  发布在  Docker
关注(0)|答案(1)|浏览(143)

我已经建立了我的应用程序(Streamlight)的停靠点图像,在我的图像中,我有另一个图像,我想运行它,因为它是我的应用程序中的搜索引擎。

我以前通过子进程(除了对接应用程序之外)这样做过

filepath = '"C:/Users/k.queenan/Documents/wsearch/docker/search-engine:/home" '
p = subprocess.Popen ('docker run -v' + filepath + 'search-image' , stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.communicate()

它运行得很好。我现在收到一个错误,说文件路径无效。我怎么才能在对接版本中避开这个问题呢?

6ojccjat

6ojccjat1#

有一种方法叫DinD(Docker In Docker),但它应该用于开发docker本身。

从安全Angular 来看,它是不安全的,因为您的父容器需要特权权限。(您还可以通过挂载docker Unix套接字/var/run/docker.sock从容器控制docker守护进程本身--但您还需要特权权限--因此这取决于您的用例,但不推荐这样做)

请改用docker-compose

一个样例多容器YAML文件(此方法与您的用例完全匹配):

version: "3.7"

services:
  app:
    image: node:12-alpine
    command: sh -c "yarn install && yarn run dev"
    ports:
      - 3000:3000
    working_dir: /app
    volumes:
      - ./:/app
    environment:
      MYSQL_HOST: mysql
      MYSQL_USER: root
      MYSQL_PASSWORD: secret
      MYSQL_DB: todos

  mysql:
    image: mysql:5.7
    volumes:
      - todo-mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: todos

volumes:
  todo-mysql-data:

相关问题