gpt4 book ai didi

docker-compose - 无法在使用 BUILD 时创建的文件夹中使用绑定(bind)挂载

转载 作者:行者123 更新时间:2023-12-04 19:05:41 28 4
gpt4 key购买 nike

我有一个 docker-compose 文件,它使用 Dockerfile 来构建图像。在此图像 (Dockerfile) 中,我创建了文件夹 /workspace我想绑定(bind) mount 以在我的本地文件系统中持久化。
在 docker-compose up 之后,如果我绑定(bind)挂载,则该文件夹为空,但如果我不挂载此文件夹,一切正常(并且该文件夹与我添加的所有文件一起存在)。
这是我的 docker-compose.yml:

version: "3.9"
services:
web:
build: .
command: uwsgi --ini /workspace/confs/uwsgi.ini --logger file:/workspace/logs/uswgi.log --processes 1 --workers 1 --plugins-dir=/usr/lib/uwsgi/plugins/ --plugin=python
environment:
- DB_HOST=db
- DB_NAME=***
- DB_USER=***
- DB_PASS=***
depends_on:
- db
- redis
- memcached
volumes:
- ./workspace:/workspace
networks:
- asyncmail
- traefik
# db, redis and memcached are ommited here
# aditional labels for traefik is also ommited
这是我的 Dockerfile:
FROM ubuntu:trusty
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
SHELL ["/bin/bash", "-c"]
RUN mkdir /workspace
RUN apt-get update -y && apt-get upgrade -y
RUN apt-get install -y redis-server python3-pip git-core postgresql-client
RUN apt-get install -y libpq-dev python3-dev libffi-dev libtiff5-dev zlib1g-dev libjpeg8-dev libyaml-dev libpython3-dev openssh-client uwsgi-plugin-python3 libpcre3 libpcre3-dev uwsgi-plugin-python

ADD myapp /workspace/
WORKDIR /workspace/src/
RUN /bin/bash -c "pip3 install cffi \
&& pip3 install -r /workspace/src/requirements.txt \
&& ./manage.py collectstatic --noinput"

RUN ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

# CMD ["uwsgi", "--ini", "/workspace/confs/uwsgi.ini", "--logger", "file:/workspace/logs/uswgi.log"]
  • 我知道有些项目可以优化,但是当我做 docker-compose up -d ./workspace 文件夹创建时只有一个名为 src 的文件夹。 .在容器内,/workspace 也只有这个空文件夹;
  • 如果我删除 docker-compose 中的 volumes 行,在容器内,文件夹/workspace 包含我的应用程序的所有源代码。

  • 我做错了什么,我无法绑定(bind)安装工作区文件夹?
    PS:我知道我正在使用的这个图像(ubuntu trusty)是旧的,但我的旧应用程序只运行这个版本。

    最佳答案

    我是否正确假设您要出现在工作区中的文件实际上位于主机中名为“myapp”的文件夹中
    (从这条线看来是这样)ADD myapp /workspace/我认为您的意思是将其映射到您的 docker 容器中,因此在卷下

    volumes:
    - ./myapp:/workspace
    卷映射以一种方式工作,即容器内的文件夹被主机上映射文件夹的内容替换,而不是相反......

    关于docker-compose - 无法在使用 BUILD 时创建的文件夹中使用绑定(bind)挂载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70535325/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com