Java Testcontainers不运行FTP容器
我正在尝试使用FTP在Java中部署testcontainerJava Testcontainers不运行FTP容器,java,spring-boot,testcontainers,Java,Spring Boot,Testcontainers,我正在尝试使用FTP在Java中部署testcontainer private final static ImageFromDockerfile imageDockerFile = new ImageFromDockerfile().withFileFromClasspath("Dockerfile",
private final static ImageFromDockerfile imageDockerFile = new ImageFromDockerfile().withFileFromClasspath("Dockerfile",
"ftp_container/Dockerfile")
.withFileFromClasspath("vsftp.conf",
"ftp_container/vsftp.conf")
.withFileFromClasspath("start.sh",
"ftp_container/start.sh");
public FtpContainer()
{
super(imageDockerFile);
withCopyFileToContainer(MountableFile.forClasspathResource("ftp_container/vsftp.conf"),
"etc/vsftp/vsftp.conf");
withCopyFileToContainer(MountableFile.forClasspathResource("ftp_container/start.sh"),
"/start.sh");
withCommand("ftp");
}
它开始时没有问题,但是容器没有出现,我无法连接到容器
Dockerfile是:
FROM centos
RUN yum -y install openssl vsftpd && rm -rf /var/cache/yum/*
RUN useradd -ms /bin/bash admin && echo 'admin:admin' | chpasswd
COPY vsftp.conf /etc/vsftp/vsftp.conf
COPY start.sh /
RUN chmod +x /start.sh
RUN mkdir -p /home/vsftpd/
RUN chown -R ftp:ftp /home/vsftpd/
VOLUME /home/admin
VOLUME /var/log/vsftpd
EXPOSE 21
ENTRYPOINT ["/start.sh"]
编辑:我添加我的开始。sh:
#!/bin/sh
CONF_FILE="/etc/vsftp/vsftp.conf"
echo "Launching vsftp on ftp protocol"
&>/dev/null /usr/sbin/vsftpd $CONF_FILE
如果容器“未出现”,它可能意味着三件事:
start.sh
,但由于某种原因,进程已停止,docker容器本身也停止。在这种情况下,在测试容器代码的右边(实际使用它的代码之前)放置一个断点,到达该断点后运行docker ps
。集装箱很可能不在那里。然后试着从docker ps-a
了解是否有一个“最近死亡”的容器,它的日志显示了什么?(您可以尝试在start.sh中放置一个echo hello
,以检查它是否打印到stdout并由docker logs命令获取)start.sh
的编写方式)。在本例中,使用断点执行相同的技巧,但这次当您运行docker ps
时,您应该会看到docker进程启动并运行。
尝试等待一段时间并“继续”测试执行。如果您现在看到测试工作正常,您可以重写启动脚本,使其在服务准备就绪(端口可以接收连接)时不会返回,也可以在代码中添加“人工”等待(是的,我知道这听起来很糟糕,但有时您无法加固容器,因此这是您唯一的选择)好的,我会试着和echo hello和docker ps一起看。谢谢!所以它映射到我答案中的案例“2”,对吗?有人试图运行它吗?“docker ps-a”显示了什么?它在退出0时退出,在下面的评论中我显示了我的开始。sh你应该编辑你的问题,而不是添加答案,因为它实际上不是一个答案:)无论如何,这意味着离开testcontainers,你创建的docker映像也应该立即以0退出,对吗?在这种情况下,我建议尝试构建映像(使用docker build命令),并在开始使用testcontainers之前从命令行开始。。。我怀疑它来自配置文件,但我不熟悉这个具体的ftp服务器,所以我无法对它发表评论,因为我也尝试过构建映像,但没有成功。您知道另一个ftp服务器要放入testcontainers吗?