diff --git a/Dockerfile.server b/Dockerfile.server new file mode 100644 index 00000000..c9ea7034 --- /dev/null +++ b/Dockerfile.server @@ -0,0 +1,32 @@ +FROM ruby:2.7.0 + +ENV JUDGE0_HOMEPAGE "https://judge0.com" +LABEL homepage=$JUDGE0_HOMEPAGE + +ENV JUDGE0_SOURCE_CODE "https://github.com/judge0/judge0" +LABEL source_code=$JUDGE0_SOURCE_CODE + +ENV JUDGE0_MAINTAINER "Herman Zvonimir Došilović " +LABEL maintainer=$JUDGE0_MAINTAINER + +RUN apt update && \ + apt install -y --no-install-recommends \ + libpq-dev && \ + rm -rf /var/lib/apt/lists/* && \ + echo "gem: --no-document" > /root/.gemrc && \ + gem install bundler:2.3.14 + +EXPOSE 2358 + +WORKDIR /api + +COPY Gemfile* ./ +RUN RAILS_ENV=production bundle + +COPY . . + +ENTRYPOINT ["/api/docker-entrypoint.sh"] +CMD ["/api/scripts/server"] + +ENV JUDGE0_VERSION "1.13.0" +LABEL version=$JUDGE0_VERSION diff --git a/Dockerfile b/Dockerfile.worker similarity index 77% rename from Dockerfile rename to Dockerfile.worker index 59fe5926..05649018 100644 --- a/Dockerfile +++ b/Dockerfile.worker @@ -12,18 +12,16 @@ LABEL maintainer=$JUDGE0_MAINTAINER ENV PATH "/usr/local/ruby-2.7.0/bin:/opt/.gem/bin:$PATH" ENV GEM_HOME "/opt/.gem/" -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ +RUN apt update && \ + apt install -y --no-install-recommends \ cron \ libpq-dev \ sudo && \ rm -rf /var/lib/apt/lists/* && \ echo "gem: --no-document" > /root/.gemrc && \ - gem install bundler:2.1.4 && \ - npm install -g --unsafe-perm aglio@2.3.0 + gem install bundler:2.3.14 -ENV VIRTUAL_PORT 2358 -EXPOSE $VIRTUAL_PORT +EXPOSE 2358 WORKDIR /api @@ -36,7 +34,7 @@ RUN cat /etc/cron.d/* | crontab - COPY . . ENTRYPOINT ["/api/docker-entrypoint.sh"] -CMD ["/api/scripts/server"] +CMD ["/api/scripts/workers"] ENV JUDGE0_VERSION "1.13.0" LABEL version=$JUDGE0_VERSION @@ -47,10 +45,13 @@ FROM production AS development ARG DEV_USER=judge0 ARG DEV_USER_ID=1000 -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ +EXPOSE 3001 + +RUN apt update && \ + apt install -y --no-install-recommends \ tmux \ vim && \ + npm install -g --unsafe-perm aglio@2.3.0 && \ useradd -u $DEV_USER_ID -m -r $DEV_USER && \ echo "$DEV_USER ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 25915362..106cc8b7 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -5,6 +5,7 @@ services: build: context: . target: development + dockerfile: Dockerfile.worker volumes: - .:/api ports: diff --git a/docker-compose.yml b/docker-compose.yml index c96d2342..74ba840d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,18 +9,16 @@ x-logging: services: server: - image: judge0/judge0:latest + image: asdf volumes: - ./judge0.conf:/judge0.conf:ro ports: - "2358:2358" - privileged: true <<: *default-logging restart: always worker: image: judge0/judge0:latest - command: ["./scripts/workers"] volumes: - ./judge0.conf:/judge0.conf:ro privileged: true @@ -28,7 +26,7 @@ services: restart: always db: - image: postgres:13.0 + image: postgres:14.3 env_file: judge0.conf volumes: - postgres-data:/var/lib/postgresql/data/ @@ -36,7 +34,7 @@ services: restart: always redis: - image: redis:6.0 + image: redis:6.2.7 command: [ "bash", "-c", 'docker-entrypoint.sh --appendonly yes --requirepass "$$REDIS_PASSWORD"' diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 5bd80749..6d6594b5 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,3 +1,5 @@ #!/bin/bash -cron -exec "$@" \ No newline at end of file +if [[ "$(which cron)" != "" ]]; then + cron +fi +exec "$@"