【发布时间】:2021-11-11 19:53:28
【问题描述】:
我有一个 python 脚本可以更改文件的第一行,它可以在本地工作,但在运行 docker 容器时不能。
目录结构
my_workdir
├─── Dockerfile
├─── docker-compose.yml
├─── script.py
└─── data
└─── r2.txt
这是我的python代码
a_file = open("data/r2.txt", "r")
list_of_lines = a_file.readlines()
list_of_lines[0] = "1\n"
a_file = open("data/r2.txt", "a")
a_file.writelines(list_of_lines)
a_file.close()
它基本上将“r2.txt”中的第一行更改为“1”,但是当我检查 txt 文件时并没有更改它。我正在阅读您需要安装一个卷,所以我将以下内容添加到我的 docker-compose.yml 文件中
version: "3"
services:
app:
image: imagen-c1
container_name: c1
privileged: true
deploy:
replicas: 1
update_config:
parallelism: 1
delay: 5s
restart_policy:
condition: on-failure
build: .
environment:
- DISPLAY=${DISPLAY}
- LEGACY_IPTABLES=true
volumes:
- /tmp/.X11-unix:/tmp/.X11-unix
- ./:/data #HERE IS THE VOLUME
这是我的 dockerfile
FROM python:3.9-alpine
RUN pip install selenium
RUN apk add chromium
RUN apk add chromium-chromedriver
ENV CHROME_BIN=/usr/bin/chromium-browser \
CHROME_PATH=/usr/lib/chromium/
ENV HOME /home/user-machine
RUN pip install webdriver_manager
WORKDIR ./
COPY ["script.py", "data/", "./"]
CMD python3 script.py
也许我没有正确执行,因为文件保持不变。
【问题讨论】:
-
您的问题缺少重要信息。你的
docker-compose.yml是什么样的?你的 Dockerfile 呢?您的 Python 代码正在寻找data目录作为其当前目录的子目录;你确定你的 cwd 是你认为的那样吗? -
对不起,我更新了内容
标签: python linux docker docker-compose dockerfile