为什么当我没有 Js 使用 Docker 时 s3fs 显示 "invalid option -- 'j'"?
Why s3fs is showing "invalid option -- 'j'" when I have no Js using Docker?
我正在构建一个 docker 图像,使用它有一个必须安装为 S3 文件夹的日志文件。我使用 s3fs 来解决这个问题;但是,我不能 运行,我经常遇到这个错误:
s3fs: invalid option -- 'j'
这是我的 Docker 文件的示例:
FROM openjdk:11
RUN mkdir /home/app/
WORKDIR /home/app/
RUN mkdir logs
COPY ./target/MY_JAVA_APP.jar .
ENV AWS_ACCESS_KEY_ID=MY_KEY_ID
ENV AWS_SECRET_ACCESS_KEY=MY_SECRET_ACCESS_KEY
ENV AWS_REGION=MY_REGION
RUN apt-get update
RUN apt install s3fs -y
ARG S3_MOUNT_DIRECTORY=/home/app/logs
ENV S3_MOUNT_DIRECTORY=$S3_MOUNT_DIRECTORY
ARG S3_BUCKET_NAME=MY_BUCKET
ENV S3_BUCKET_NAME=$S3_BUCKET_NAME
RUN echo $AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY > /root/.passwd-s3fs && \
chmod 600 /root/.passwd-s3fs
EXPOSE 8080
CMD ["java","-jar","MY_JAVA_APP.jar"]
ENTRYPOINT ["s3fs", "MY_BUCKET:/logs", "/home/app/logs", "-o", "dbglevel=info", "-f", "-o", "curldbg"]
我在任何地方都没有任何 j
,我不知何故被困住了。我什至在 GitHub 中提问,但没有可能的答案。
P.S.:
重要事项:
- 这是概念验证。
- 该项目不会在 Docker Hub 中发布。我们有一个私人仓库。
- 我计划将凭证移至 AWS 中的 Secrets。
我的解决方案,感谢 Charles Duffy 提示。
- 我创建了一个 sh 文件(start.sh),其中包含:
#REMEMBER. Take care with the Unix break lines if you use Windows or macOS.
#!/bin/sh
#The & is important to run s3fs in the background.
s3fs MY_BUCKET:/logs /home/app/logs &
java -jar MY_JAVA_APP.jar
- 我在 Dockerfile 中添加了这些代码行:
COPY start.sh .
#the 777 must be changed, but I just needed to test to know if it worked.
RUN chmod 777 /home/app/start.sh
ENTRYPOINT ["sh", "start.sh"]
- 我 运行 docker 使用 --privileged 标志。
我正在构建一个 docker 图像,使用它有一个必须安装为 S3 文件夹的日志文件。我使用 s3fs 来解决这个问题;但是,我不能 运行,我经常遇到这个错误:
s3fs: invalid option -- 'j'
这是我的 Docker 文件的示例:
FROM openjdk:11
RUN mkdir /home/app/
WORKDIR /home/app/
RUN mkdir logs
COPY ./target/MY_JAVA_APP.jar .
ENV AWS_ACCESS_KEY_ID=MY_KEY_ID
ENV AWS_SECRET_ACCESS_KEY=MY_SECRET_ACCESS_KEY
ENV AWS_REGION=MY_REGION
RUN apt-get update
RUN apt install s3fs -y
ARG S3_MOUNT_DIRECTORY=/home/app/logs
ENV S3_MOUNT_DIRECTORY=$S3_MOUNT_DIRECTORY
ARG S3_BUCKET_NAME=MY_BUCKET
ENV S3_BUCKET_NAME=$S3_BUCKET_NAME
RUN echo $AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY > /root/.passwd-s3fs && \
chmod 600 /root/.passwd-s3fs
EXPOSE 8080
CMD ["java","-jar","MY_JAVA_APP.jar"]
ENTRYPOINT ["s3fs", "MY_BUCKET:/logs", "/home/app/logs", "-o", "dbglevel=info", "-f", "-o", "curldbg"]
我在任何地方都没有任何 j
,我不知何故被困住了。我什至在 GitHub 中提问,但没有可能的答案。
P.S.:
重要事项:
- 这是概念验证。
- 该项目不会在 Docker Hub 中发布。我们有一个私人仓库。
- 我计划将凭证移至 AWS 中的 Secrets。
我的解决方案,感谢 Charles Duffy 提示。
- 我创建了一个 sh 文件(start.sh),其中包含:
#REMEMBER. Take care with the Unix break lines if you use Windows or macOS.
#!/bin/sh
#The & is important to run s3fs in the background.
s3fs MY_BUCKET:/logs /home/app/logs &
java -jar MY_JAVA_APP.jar
- 我在 Dockerfile 中添加了这些代码行:
COPY start.sh .
#the 777 must be changed, but I just needed to test to know if it worked.
RUN chmod 777 /home/app/start.sh
ENTRYPOINT ["sh", "start.sh"]
- 我 运行 docker 使用 --privileged 标志。