# This docker image is used for building Freechat in Gitlab pipelines # WARN: this image uses a lot of "lazy" practices in terms of security as its # not at all meant to be ran in a production environment. Attempts to use this # a "production/live" are not recommended FROM rust:slim-buster # required for building rust things and grabbing node RUN apt-get update && apt-get upgrade -y && apt-get install \ git default-libmysqlclient-dev pkg-config \ curl libssl-dev ca-certificates gnupg procps \ -y --no-install-recommends # Setup node # grab key RUN curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - # add binary & source ppa RUN echo "deb https://deb.nodesource.com/node_14.x sid main" > /etc/apt/sources.list.d/nodesource.list RUN echo "deb-src https://deb.nodesource.com/node_14.x sid main" >> /etc/apt/sources.list.d/nodesource.list RUN apt-get update && apt-get install nodejs \ -y --no-install-recommends # Next we install diesel for easily setting up the database tables RUN cargo install diesel_cli --no-default-features --features mysql # Now comes the painful part of setting mysql itself # Database user will be 'admin'@'localhost' identified by 'password' # Database name is 'freechat' # Tables should be setup for us by diesel # Also I'm using expect because of the amount of interactive prompts in the way RUN apt-get install curl expect \ -y --no-install-recommends RUN mkdir /opt/mysql-setup RUN curl "https://repo.mysql.com//mysql-apt-config_0.8.17-1_all.deb" \ -o /opt/mysql-setup/mysql-apt-config_0.8.17-1_all.deb RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ apt-get install /opt/mysql-setup/mysql-apt-config_0.8.17-1_all.deb \ -y --no-install-recommends # Use the newly installed mysql packages to install the server component RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ apt-get install mysql-community-client mysql-community-server \ -y --no-install-recommends # Clean up from the apt-gets and things we don't do this RUN apt-get remove curl gnupg ca-certificates -y # will go unused in regular builds RUN apt-get autoremove -y RUN rm -rf /var/lib/apt/lists/* # Start the mysql service COPY entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"]