@@ -77,6 +77,67 @@ WORKDIR /srv/docsrs
77
77
# Tini is a small init binary to properly handle signals
78
78
CMD ["/usr/bin/tini" , "/usr/local/bin/cratesfyi" , "start-web-server" , "0.0.0.0:80" ]
79
79
80
+ # #######################
81
+ # Build server stage #
82
+ # #######################
83
+
84
+ FROM ubuntu:22.04 AS build-server
85
+
86
+ RUN apt-get update \
87
+ && DEBIAN_FRONTEND=noninteractive apt-get upgrade -y \
88
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y \
89
+ ca-certificates \
90
+ tini \
91
+ docker.io \
92
+ build-essential \
93
+ gcc \
94
+ pkg-config \
95
+ libssl-dev \
96
+ && rm -rf /var/lib/apt/lists/*
97
+
98
+ COPY --from=build /build/target/release/cratesfyi /usr/local/bin
99
+
100
+ WORKDIR /srv/docsrs
101
+ # Tini is a small init binary to properly handle signals
102
+ CMD ["/usr/bin/tini" , "/usr/local/bin/cratesfyi" , "start-build-server" ]
103
+
104
+ # ###########################
105
+ # Registry watcher stage #
106
+ # ###########################
107
+
108
+ FROM ubuntu:22.04 AS registry-watcher
109
+
110
+ RUN apt-get update \
111
+ && DEBIAN_FRONTEND=noninteractive apt-get upgrade -y \
112
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y \
113
+ ca-certificates \
114
+ tini \
115
+ git \
116
+ && rm -rf /var/lib/apt/lists/*
117
+
118
+ COPY --from=build /build/target/release/cratesfyi /usr/local/bin
119
+
120
+ WORKDIR /srv/docsrs
121
+ # Tini is a small init binary to properly handle signals
122
+ CMD ["/usr/bin/tini" , "/usr/local/bin/cratesfyi" , "--" , "start-registry-watcher" , "--repository-stats-updater=enabled" , "--cdn-invalidator=enabled" ]
123
+
124
+ # ##############
125
+ # CLI stage #
126
+ # ##############
127
+
128
+ FROM ubuntu:22.04 AS cli
129
+
130
+ RUN apt-get update \
131
+ && DEBIAN_FRONTEND=noninteractive apt-get upgrade -y \
132
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y \
133
+ ca-certificates \
134
+ tini \
135
+ && rm -rf /var/lib/apt/lists/*
136
+
137
+ COPY --from=build /build/target/release/cratesfyi /usr/local/bin
138
+
139
+ ENTRYPOINT ["/usr/local/bin/cratesfyi" ]
140
+
80
141
# #################
81
142
# Output stage #
82
143
# #################
0 commit comments