我正在尝试创建一个docker文件(基本操作系统必须为Centos),该文件将安装mariadb,启动mariadb并保持mariadb运行。这样我就可以使用gitlab中的容器来运行集成测试(Java)。这就是我到目前为止

FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

# Install epel and java
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel wget

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/

EXPOSE 8080
EXPOSE 3306

# install mariadb
RUN yum -y install mariadb
RUN yum -y install mariadb-server
RUN systemctl start mariadb
ENTRYPOINT tail -f /dev/null

我得到的错误是
无法获得D-Bus连接:不允许操作

最佳答案

您可以执行以下操作:

FROM centos/mariadb-102-centos7

USER root
# Install epel and java
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel wget

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/

您可以将代码文件夹安装到此容器中,然后使用docker exec执行它。

但是建议您使用两个不同的容器:一个用于数据库,另一个用于您的代码。然后,您可以将连接到db容器所需的env vars传递给代码容器。

08-26 23:09
查看更多