Skip to content

Commit 842a4d6

Browse files
committed
feat(ci): build Docker images automatically
1 parent 26584b0 commit 842a4d6

File tree

4 files changed

+63
-22
lines changed

4 files changed

+63
-22
lines changed

.github/workflows/docker.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Build and Push Docker Image
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
8+
jobs:
9+
build-and-push:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout repository
14+
uses: actions/checkout@v4
15+
16+
- name: Log in to DockerHub
17+
uses: docker/login-action@v3
18+
with:
19+
username: ${{ secrets.DOCKER_USERNAME }}
20+
password: ${{ secrets.DOCKER_PASSWORD }}
21+
22+
- name: Patch Dockerfile for GitHub Actions
23+
run: sed -i.bak 's|COPY supervisord.conf|COPY docker/web/supervisord.conf|' docker/web/Dockerfile
24+
25+
- name: Build and Push Web Image
26+
run: |
27+
docker build -t ${{ secrets.DOCKER_USERNAME }}/voj.web:latest -f docker/web/Dockerfile .
28+
docker push ${{ secrets.DOCKER_USERNAME }}/voj.web:latest
29+
30+
- name: Build and Push Judger Image
31+
run: |
32+
docker build -t ${{ secrets.DOCKER_USERNAME }}/voj.judger:latest -f docker/judger/Dockerfile .
33+
docker push ${{ secrets.DOCKER_USERNAME }}/voj.judger:latest
34+

docker/judger/Dockerfile

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,23 @@ ARG ACTIVEMQ_PORT=61616
1111

1212
# Set environment variables.
1313
ENV HOME /root
14-
ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64
14+
ENV JAVA_HOME /usr/lib/jvm/java-21-openjdk-amd64
1515
ENV M2_HOME /opt/maven
1616

1717
# Define working directory.
1818
WORKDIR /root
1919

2020
# Install Java and Python
2121
RUN apt-get update && \
22-
apt-get install -y git wget make g++ openjdk-17-jdk python3 && \
22+
apt-get install -y git curl wget make g++ openjdk-21-jdk python3 && \
2323
# Setup Python3 as the default Python
2424
ln -s /usr/bin/python3 /usr/bin/python && \
2525
# Install Maven
26-
wget http://mirrors.tencent.com/apache/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz && \
27-
tar -xf apache-maven-3.9.6-bin.tar.gz -C /opt && \
28-
rm apache-maven-3.9.6-bin.tar.gz && \
29-
mv /opt/apache-maven-3.9.6 /opt/maven
26+
MAVEN_VERSION=$(curl -s https://maven.apache.org/download.cgi | grep -oP 'apache-maven-\K[0-9]+\.[0-9]+\.[0-9]+' | head -1) && \
27+
wget https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz && \
28+
tar -xf apache-maven-${MAVEN_VERSION}-bin.tar.gz -C /opt && \
29+
mv /opt/apache-maven-${MAVEN_VERSION} /opt/maven && \
30+
rm apache-maven-${MAVEN_VERSION}-bin.tar.gz
3031

3132
# Setup Judger Project
3233
RUN git clone https://github.com/hzxie/voj.git && \

docker/web/Dockerfile

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ARG MAIL_PASSWORD=passwd
1212

1313
# Set environment variables.
1414
ENV HOME /root
15-
ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64
15+
ENV JAVA_HOME /usr/lib/jvm/java-21-openjdk-amd64
1616
ENV M2_HOME /opt/maven
1717

1818
# Define working directory.
@@ -27,29 +27,35 @@ RUN /etc/init.d/mariadb start && \
2727
mysql -e "CREATE DATABASE voj" && \
2828
mysql -e "GRANT SELECT, INSERT, UPDATE, DELETE ON voj.* TO 'voj'@'%' IDENTIFIED BY '${MYSQL_USER_PASS}'"
2929

30-
# Install Java and Maven
31-
RUN apt-get install -y openjdk-17-jdk wget && \
32-
wget https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz && \
33-
tar -xf apache-maven-3.9.6-bin.tar.gz -C /opt && \
34-
mv /opt/apache-maven-3.9.6 /opt/maven && \
35-
rm apache-maven-3.9.6-bin.tar.gz && \
30+
# Install Java
31+
RUN apt-get install -y openjdk-21-jdk wget curl && \
32+
# Determine the versions of dependencies
33+
MAVEN_VERSION=$(curl -s https://maven.apache.org/download.cgi | grep -oP 'apache-maven-\K[0-9]+\.[0-9]+\.[0-9]+' | head -1) && \
34+
ACTIVEMQ_VERSION=$(curl -s https://activemq.apache.org/components/classic/download/ | grep -oP 'apache-activemq-\K[0-9]+\.[0-9]+\.[0-9]+' | head -1) && \
35+
TOMCAT_VERSION=$(curl -s https://tomcat.apache.org/download-11.cgi | grep -oP 'apache-tomcat-\K[0-9]+\.[0-9]+\.[0-9]+' | head -1) && \
36+
TOMCAT_MAJOR=$(echo $TOMCAT_VERSION | cut -d. -f1) && \
37+
# Install Maven
38+
wget https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz && \
39+
tar -xf apache-maven-${MAVEN_VERSION}-bin.tar.gz -C /opt && \
40+
mv /opt/apache-maven-${MAVEN_VERSION} /opt/maven && \
41+
rm apache-maven-${MAVEN_VERSION}-bin.tar.gz && \
3642
# Install ActiveMQ
3743
useradd activemq -s /usr/sbin/nologin && \
38-
wget https://archive.apache.org/dist/activemq/6.1.2/apache-activemq-6.1.2-bin.tar.gz && \
39-
tar -xf apache-activemq-6.1.2-bin.tar.gz -C /opt && \
40-
mv /opt/apache-activemq-6.1.2 /opt/activemq && \
44+
wget https://archive.apache.org/dist/activemq/${ACTIVEMQ_VERSION}/apache-activemq-${ACTIVEMQ_VERSION}-bin.tar.gz && \
45+
tar -xf apache-activemq-${ACTIVEMQ_VERSION}-bin.tar.gz -C /opt && \
46+
mv /opt/apache-activemq-${ACTIVEMQ_VERSION} /opt/activemq && \
47+
rm apache-activemq-${ACTIVEMQ_VERSION}-bin.tar.gz && \
4148
chown -R activemq:activemq /opt/activemq && \
4249
sed -i 's/memoryUsage percentOfJvmHeap="70"/memoryUsage limit="256 mb"/g' /opt/activemq/conf/activemq.xml && \
4350
sed -i 's/storeUsage limit="100 gb"/storeUsage limit="1 gb"/g' /opt/activemq/conf/activemq.xml && \
4451
sed -i 's/tempUsage limit="50 gb"/tempUsage limit="1 gb"/g' /opt/activemq/conf/activemq.xml && \
45-
rm apache-activemq-6.1.2-bin.tar.gz && \
4652
# Install Tomcat
4753
useradd tomcat -s /usr/sbin/nologin && \
48-
wget https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.24/bin/apache-tomcat-10.1.24.tar.gz && \
49-
tar -xf apache-tomcat-10.1.24.tar.gz -C /opt && \
50-
mv /opt/apache-tomcat-10.1.24 /opt/tomcat/ && \
51-
chown -R tomcat:tomcat /opt/tomcat/ && \
52-
rm apache-tomcat-10.1.24.tar.gz
54+
wget https://archive.apache.org/dist/tomcat/tomcat-${TOMCAT_MAJOR}/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz && \
55+
tar -xf apache-tomcat-${TOMCAT_VERSION}.tar.gz -C /opt && \
56+
mv /opt/apache-tomcat-${TOMCAT_VERSION} /opt/tomcat && \
57+
chown -R tomcat:tomcat /opt/tomcat && \
58+
rm apache-tomcat-${TOMCAT_VERSION}.tar.gz
5359

5460
# Setup Web Project
5561
RUN apt-get install -y git && \

0 commit comments

Comments
 (0)