相关疑难解决方法(0)

如何将文件复制到 Docker 卷并通过 docker-compose 使用该卷

  • Docker 容器中运行着一个 Web 服务。
  • 该 Web 服务依赖于大 json 文件来启动。

我创建了一个 Docker 卷来存储 json 文件docker volume create my-api-files

这是docker-compose网络服务的文件:

version: '3'

services:
  my-api:
    image: node:alpine
    expose:
      - ${NODE_PORT}
    volumes:
      - ./:/api
      - my-api-files:/files
    working_dir: /api
    command: npm run start

volumes: 
  my-api-files: 
    external: true
Run Code Online (Sandbox Code Playgroud)

现在,如何my-api-files在启动 Web 服务之前将 json 文件复制到 docker 卷docker-compose up

docker docker-compose docker-volume

7
推荐指数
1
解决办法
1万
查看次数

即使从初始化,docker-compose音量也是空的

我对docker很新,我尝试为不同的网站创建一个docker-compose图像.

除了我的卷外,一切都很好.

这是docker-compose的例子:

version: '2'

services:
  website:
    build: 
        context: ./dockerfiles/                                        
        args:                                                                      
            MYSQL_ROOT_PASSWORD: mysqlp@ssword 
    volumes:
        - ./logs:/var/log
        - ./html:/var/www
        - ./nginx:/etc/nginx
        - ./mysql-data:/var/lib/mysql
    ports:
        - "8082:80"
        - "3307:3306"
Run Code Online (Sandbox Code Playgroud)

这是我的docker文件:

FROM php:5.6-fpm

ARG MYSQL_ROOT_PASSWORD

RUN export DEBIAN_FRONTEND=noninteractive; \
echo mysql-server mysql-server/root_password password $MYSQL_ROOT_PASSWORD | debconf-set-selections; \
echo mysql-server mysql-server/root_password_again  password $MYSQL_ROOT_PASSWORD | debconf-set-selections;

RUN apt-get update && apt-get install -y -q mysql-server php5-mysql nginx wget

EXPOSE 80 3306

VOLUME ["/var/www", "/etc/nginx", "/var/lib/mysql", "/var/log"]
Run Code Online (Sandbox Code Playgroud)

一切都运行良好,期望我的所有文件夹都是空的进入我的主机卷.我想在我的文件夹中看到nginx conf和mysl数据.

我究竟做错了什么?

谢谢你的帮助.

编辑1:实际上问题是我希望docker-compose在我的docker目录中创建卷(如果它不存在),并且如果它存在则使用该卷,如https://stackoverflow.com/a/中所述. 39181484.但它似乎不起作用.

docker dockerfile docker-compose

6
推荐指数
1
解决办法
6007
查看次数

Docker-Compose无法复制haproxy.cfg

我的问题是我有一个docker-compose.yml文件和一个haproxy.cfg文件,我想让docker-compose将haproxy.cfg文件复制到docker容器中。根据Docker composer发布后的复制文件,我可以使用卷来执行此操作,但就我而言,出现以下错误。谁能帮助我实现这一目标。

以下是代码和所有内容

docker-compose.yml

version: "3.3"
services:
 ###After all services are up, we are initializing the gateway
 gateway:
  container_name: gateway-haproxy
  image: haproxy
  volumes:
    - .:/usr/local/etc/haproxy
  ports:
   - 80:80
  network_mode: "host"
Run Code Online (Sandbox Code Playgroud)

资料夹结构

在此处输入图片说明

命令输出

root@ubuntu:/home/karunesh/Desktop/Stuff/SelfStudy/DevOps/docker# docker-compose up
Creating gateway-haproxy ... 
Creating gateway-haproxy ... done
Attaching to gateway-haproxy
gateway-haproxy | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds 
gateway-haproxy | [ALERT] 219/163305 (6) : [/usr/local/sbin/haproxy.main()] No enabled listener found (check for 'bind' directives) …
Run Code Online (Sandbox Code Playgroud)

haproxy docker docker-compose docker-volume docker-copy

3
推荐指数
2
解决办法
2033
查看次数