diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index c5a0ea1..a41b687 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -118,7 +118,6 @@ jobs: matrix: image: - grunt - - rails - jq - goaccess steps: diff --git a/.github/workflows/rails-docker-build.yml b/.github/workflows/rails-docker-build.yml new file mode 100644 index 0000000..420abeb --- /dev/null +++ b/.github/workflows/rails-docker-build.yml @@ -0,0 +1,59 @@ +name: Build Rails Docker Images + +on: + push: + branches: [master] + paths: + - "rails/**/Dockerfile" + - ".github/workflows/rails-docker-build.yml" + pull_request: + branches: [master] + paths: + - "rails/**/Dockerfile" + - ".github/workflows/rails-docker-build.yml" + workflow_dispatch: + +jobs: + build-rails: + name: Build Rails Images + runs-on: ubuntu-latest + strategy: + matrix: + include: + - rails-version: '6' # Rails 6 + is-latest: false + - rails-version: '7' # Rails 7 + is-latest: false + - rails-version: '8' # Rails 8 + is-latest: true + steps: + - uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Generate Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: voxxit/rails + tags: | + type=raw,value=${{ matrix.rails-version }} + type=raw,value=latest,enable=${{ matrix.is-latest == true }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: ./rails/${{ matrix.rails-version }} + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file diff --git a/apt-mirror/Dockerfile b/apt-mirror/Dockerfile index 3cb85fe..43cd88b 100644 --- a/apt-mirror/Dockerfile +++ b/apt-mirror/Dockerfile @@ -41,8 +41,8 @@ ENV SLEEP_SECS 3600 VOLUME ["${BASE_PATH}"] -COPY --from=src ./resources/apt/mirror.list.template /etc/apt/ -COPY --from=src ./resources/apt/post-mirror.sh ${VAR_PATH}/ -COPY --from=src ./resources/docker-entrypoint.sh /docker-entrypoint.sh +COPY ./resources/apt/mirror.list.template /etc/apt/ +COPY ./resources/apt/post-mirror.sh ${VAR_PATH}/ +COPY ./resources/docker-entrypoint.sh /docker-entrypoint.sh ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/bind/Dockerfile b/bind/Dockerfile index 264596a..a2a915d 100644 --- a/bind/Dockerfile +++ b/bind/Dockerfile @@ -2,8 +2,8 @@ FROM alpine:3.21 RUN apk add --no-cache bind bind-doc bind-tools -COPY --from=src etc/bind/ /etc/bind/ -COPY --from=src entrypoint.sh /sbin/entrypoint.sh +COPY etc/bind/ /etc/bind/ +COPY entrypoint.sh /sbin/entrypoint.sh EXPOSE 53/tcp 53/udp diff --git a/icecast/Dockerfile b/icecast/Dockerfile index 85108e6..2c1ad15 100644 --- a/icecast/Dockerfile +++ b/icecast/Dockerfile @@ -19,11 +19,11 @@ RUN addgroup -g 1000 icecast \ && install -d -o icecast -g icecast /etc/icecast \ && chown -R icecast:icecast /usr/share/icecast -COPY --from=src etc/mime.types /etc/ +COPY etc/mime.types /etc/ USER icecast:icecast -COPY --from=src etc/icecast.xml /etc/icecast/ -COPY --from=src docker-entrypoint.sh / +COPY etc/icecast.xml /etc/icecast/ +COPY docker-entrypoint.sh / CMD [ "/docker-entrypoint.sh" ] diff --git a/liquidsoap/Dockerfile b/liquidsoap/Dockerfile index 9079a18..da5bd14 100644 --- a/liquidsoap/Dockerfile +++ b/liquidsoap/Dockerfile @@ -4,7 +4,7 @@ LABEL org.opencontainers.image.authors="j@srv.im" ENV LIQUIDSOAP_VERSION="2.2.0" -COPY --from=src install.sh /tmp/install.sh +COPY install.sh /tmp/install.sh RUN chmod +x /tmp/install.sh \ && /tmp/install.sh "${LIQUIDSOAP_VERSION}" \ @@ -28,7 +28,7 @@ VOLUME [ "/media", "/var/log/liquidsoap" ] EXPOSE 10000/tcp -COPY --chown=1001:1001 --from=src start-liquidsoap.sh /usr/bin/start-liquidsoap.sh +COPY --chown=1001:1001 start-liquidsoap.sh /usr/bin/start-liquidsoap.sh USER 1001:1001 ENTRYPOINT [ "/usr/bin/start-liquidsoap.sh" ] diff --git a/memcached/Dockerfile b/memcached/Dockerfile index 61ed06d..e5b5e02 100644 --- a/memcached/Dockerfile +++ b/memcached/Dockerfile @@ -4,7 +4,7 @@ LABEL org.opencontainers.image.authors="j@srv.im" ENV HOME /root -COPY --from=src start /start +COPY start /start RUN apt-get update && \ apt-get install -y memcached sasl2-bin pwgen && \ diff --git a/nginx-geoip2/Dockerfile b/nginx-geoip2/Dockerfile index 1216031..b7b85ac 100644 --- a/nginx-geoip2/Dockerfile +++ b/nginx-geoip2/Dockerfile @@ -1,6 +1,6 @@ FROM ubuntu:jammy -COPY --from=src . / +COPY . / RUN export DEBIAN_FRONTEND=noninteractive \ && apt-get update \ diff --git a/nginx-http2/Dockerfile b/nginx-http2/Dockerfile index d264be1..e530082 100644 --- a/nginx-http2/Dockerfile +++ b/nginx-http2/Dockerfile @@ -4,25 +4,26 @@ LABEL org.opencontainers.image.authors="j@srv.im" EXPOSE 80/tcp 443/tcp -ENV NGINX_VERSION 1.15.12 +ENV NGINX_VERSION 1.26.3 -RUN apk add --no-cache openssl-dev pcre-dev zlib-dev build-base \ +RUN apk add --no-cache openssl-dev~=3.3 pcre-dev zlib-dev build-base \ && wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ && tar -xzvf nginx-${NGINX_VERSION}.tar.gz \ && cd nginx-${NGINX_VERSION} \ && ./configure \ - --with-http_v2_module \ - --with-http_ssl_module \ - --with-http_realip_module \ - --with-http_stub_status_module \ - --with-threads \ - --with-ipv6 \ + --with-http_v2_module \ + --with-http_ssl_module \ + --with-openssl-opt=enable-tls1_3 \ + --with-http_realip_module \ + --with-http_stub_status_module \ + --with-threads \ + --with-ipv6 \ && make -j$(getconf _NPROCESSORS_ONLN) \ && make install \ && apk del build-base \ && rm -rf /nginx-* -COPY --from=src nginx.conf /usr/local/nginx/conf/nginx.conf +COPY nginx.conf /usr/local/nginx/conf/nginx.conf VOLUME [ "/usr/local/nginx/logs", "/usr/local/nginx/html", "/usr/local/nginx/conf" ] diff --git a/nginx-rtmp/Dockerfile b/nginx-rtmp/Dockerfile index c186dc1..bcd4023 100644 --- a/nginx-rtmp/Dockerfile +++ b/nginx-rtmp/Dockerfile @@ -26,7 +26,7 @@ RUN apt-get update \ RUN ln -sf /dev/stdout /usr/local/nginx/logs/access.log \ && ln -sf /dev/stderr /usr/local/nginx/logs/error.log -COPY --from=src conf/nginx.conf /usr/local/nginx/conf/ +COPY conf/nginx.conf /usr/local/nginx/conf/ EXPOSE 80/tcp 1935/tcp diff --git a/nginx/Dockerfile b/nginx/Dockerfile index 2a42f1f..a61c360 100644 --- a/nginx/Dockerfile +++ b/nginx/Dockerfile @@ -9,7 +9,7 @@ VOLUME [ "/etc/nginx" ] EXPOSE 80/tcp 443/tcp -COPY --from=src nginx.conf /etc/nginx/nginx.conf +COPY nginx.conf /etc/nginx/nginx.conf ENTRYPOINT ["nginx"] CMD ["-c", "/etc/nginx/nginx.conf"] diff --git a/pg/Dockerfile b/pg/Dockerfile index 0a2f53e..0c9ae10 100644 --- a/pg/Dockerfile +++ b/pg/Dockerfile @@ -19,6 +19,6 @@ RUN apt-get update && \ VOLUME ["/var/lib/postgresql"] -COPY --from=src start /start +COPY start /start CMD ["/start"] diff --git a/powerdns/Dockerfile b/powerdns/Dockerfile index 988442e..3545463 100644 --- a/powerdns/Dockerfile +++ b/powerdns/Dockerfile @@ -6,7 +6,7 @@ RUN apt-get update \ && apt-get -y install --no-install-recommends pdns-server pdns-backend-mysql dnsutils \ && rm -rf /var/lib/apt/lists/* -COPY --from=src *.conf /etc/powerdns/pdns.d/ +COPY *.conf /etc/powerdns/pdns.d/ EXPOSE 53/tcp 53/udp 8081/tcp diff --git a/rails/6/Dockerfile b/rails/6/Dockerfile new file mode 100644 index 0000000..de50ada --- /dev/null +++ b/rails/6/Dockerfile @@ -0,0 +1,28 @@ +FROM alpine:3.16 + +RUN apk add --no-cache \ + bash make nodejs gcc g++ libc-dev git ruby libxml2-dev libxslt-dev \ + libffi-dev yaml-dev openssl-dev zlib-dev readline-dev linux-headers \ + && mkdir -p /usr/src/app \ + && git clone https://github.com/postmodern/ruby-install /usr/src/ruby-install \ + && cd /usr/src/ruby-install \ + && make install \ + && ruby-install --system ruby 3.0.6 -- --disable-install-rdoc \ + --with-openssl-dir=/usr \ + && gem install 'bundler:2.2.33' 'rails:6.1.7.10' \ + && bundle config --global build.nokogiri --use-system-libraries \ + && apk del ruby \ + && rm -rf /usr/src/* + +WORKDIR /usr/src/app + +ONBUILD COPY ./Gemfile /usr/src/app/ +ONBUILD COPY ./Gemfile.lock /usr/src/app/ + +ONBUILD RUN bundle install --system + +ONBUILD COPY . /usr/src/app + +EXPOSE 3000/tcp + +CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"] \ No newline at end of file diff --git a/rails/7/Dockerfile b/rails/7/Dockerfile new file mode 100644 index 0000000..9c0b799 --- /dev/null +++ b/rails/7/Dockerfile @@ -0,0 +1,28 @@ +FROM alpine:3.21 + +RUN apk add --no-cache \ + bash make nodejs gcc g++ libc-dev git ruby libxml2-dev libxslt-dev \ + libffi-dev yaml-dev openssl-dev zlib-dev readline-dev linux-headers \ + && mkdir -p /usr/src/app \ + && git clone https://github.com/postmodern/ruby-install /usr/src/ruby-install \ + && cd /usr/src/ruby-install \ + && make install \ + && ruby-install --system ruby 3.3.0 -- --disable-install-rdoc \ + --with-openssl-dir=/usr \ + && gem install 'bundler:2.5.6' 'rails:7.2.2.1' \ + && bundle config --global build.nokogiri --use-system-libraries \ + && apk del ruby \ + && rm -rf /usr/src/* + +WORKDIR /usr/src/app + +ONBUILD COPY ./Gemfile /usr/src/app/ +ONBUILD COPY ./Gemfile.lock /usr/src/app/ + +ONBUILD RUN bundle install --system + +ONBUILD COPY . /usr/src/app + +EXPOSE 3000/tcp + +CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"] \ No newline at end of file diff --git a/rails/Dockerfile b/rails/8/Dockerfile similarity index 59% rename from rails/Dockerfile rename to rails/8/Dockerfile index cbc9722..61d7eae 100644 --- a/rails/Dockerfile +++ b/rails/8/Dockerfile @@ -1,14 +1,15 @@ FROM alpine:3.21 RUN apk add --no-cache \ - bash make nodejs gcc libc-dev git ruby libxml2-dev libxslt-dev \ - libffi-dev yaml-dev openssl-dev zlib-dev readline-dev \ + bash make nodejs gcc g++ libc-dev git ruby libxml2-dev libxslt-dev \ + libffi-dev yaml-dev openssl-dev zlib-dev readline-dev linux-headers \ && mkdir -p /usr/src/app \ && git clone https://github.com/postmodern/ruby-install /usr/src/ruby-install \ && cd /usr/src/ruby-install \ && make install \ - && ruby-install --system ruby 2.2.0-rc1 -- --disable-install-rdoc \ - && gem install bundler --no-ri --no-rdoc \ + && ruby-install --system ruby 3.3.0 -- --disable-install-rdoc \ + --with-openssl-dir=/usr \ + && gem install 'bundler:2.5.6' 'rails:8.0.2' \ && bundle config --global build.nokogiri --use-system-libraries \ && apk del ruby \ && rm -rf /usr/src/* @@ -24,5 +25,4 @@ ONBUILD COPY . /usr/src/app EXPOSE 3000/tcp -# replace in your Dockerfile with another ruby server, etc. -CMD bundle exec rails server +CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"] \ No newline at end of file diff --git a/rsyslog/Dockerfile b/rsyslog/Dockerfile index 2f0d284..99aed85 100644 --- a/rsyslog/Dockerfile +++ b/rsyslog/Dockerfile @@ -10,6 +10,6 @@ VOLUME [ "/var/log", "/etc/rsyslog.d" ] # for some reason, the apk comes built with a v5 # config file. using this one for v8: -COPY --from=src ./etc/rsyslog.conf /etc/rsyslog.conf +COPY ./etc/rsyslog.conf /etc/rsyslog.conf ENTRYPOINT [ "rsyslogd", "-n" ] diff --git a/swarm/Dockerfile b/swarm/Dockerfile index d3d03ce..83e0c61 100644 --- a/swarm/Dockerfile +++ b/swarm/Dockerfile @@ -2,8 +2,8 @@ FROM scratch LABEL org.opencontainers.image.authors="j@srv.im" -COPY --from=src swarm_linux_amd64 /bin/swarm -COPY --from=src ca-certificates.crt /etc/ssl/certs/ca-certificates.crt +COPY swarm_linux_amd64 /bin/swarm +COPY ca-certificates.crt /etc/ssl/certs/ca-certificates.crt EXPOSE 2375