我想在docker中运行一个aws / appium测试项目。我有一个在容器中运行的bash脚本,它从S3下载文件并创建我的项目的zip。
Dockerfile:
FROM maven:3.3.9
RUN apt-get update && \
apt-get -y install python && \
apt-get -y install python-pip && \
pip install awscli
RUN export PATH=$PATH:/usr/local/bin
有一个docker compose文件,该命令运行一个bash脚本:
version: '2'
volumes:
maven_cache: ~
services:
application: &application
build: .
tmpfs:
- /tmp:rw,nodev,noexec,nosuid
volumes:
- ./:/app
- maven_cache:/root/.m2/repository
working_dir: /app
command: ./aws-upload.sh
这是./aws-upload.sh bash脚本的开头。它准备了我以后需要上传的文件:
#!/usr/bin/env bash
mvn clean package -DskipTests=true
aws s3 cp s3://<bucket-name>/app.apk $(pwd)
cp target/zip-with-dependencies.zip $(pwd)
我只希望上面的文件存在于容器中,但它们也出现在本地。我的docker-compose文件中有没有正确配置的内容?
由于
答案 0 :(得分:1)
在您的撰写文件中,您定义了一个卷./:/app
,它将撰写文件所在的主机文件夹映射到容器app
文件夹。如果您在app
文件夹中执行bash脚本,它还会使主机上创建的文件可用。
如果你想避免这种情况,请删除卷映射(如果你不需要它)或在另一个未映射到你主机的文件夹中执行脚本。
答案 1 :(得分:0)
这很正常。在composefile中声明以下内容时:
volumes:
- ./:/app
这意味着将当前主机目录挂载到容器内的/app
。这将有效地保持当前目录和容器内的/app
文件夹同步。
因此,如果aws-upload.sh
脚本在/app
中创建文件,它们也会显示在撰写文件旁边。