mirror of
https://github.com/lifegpc/pixiv_downloader.git
synced 2026-06-06 05:49:01 +08:00
Add docker health check
This commit is contained in:
4
.github/workflows/docker.yml
vendored
4
.github/workflows/docker.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: true
|
||||
@@ -40,7 +40,7 @@ jobs:
|
||||
- name: Switch docker driver
|
||||
run: docker buildx create --use
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v5
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
cache-from: type=gha,scope=docker-${{ steps.cache_key.outputs.cache_key }}
|
||||
|
||||
26
Dockerfile
26
Dockerfile
@@ -45,6 +45,26 @@ RUN export PKG_CONFIG_PATH=/clib/lib/pkgconfig \
|
||||
&& ./configure --enable-shared --disable-static --enable-gpl --enable-version3 --enable-libx264 --prefix=/clib \
|
||||
&& make -j$(grep -c ^processor /proc/cpuinfo) && make install \
|
||||
&& cd ~ && rm -rf ffmpeg
|
||||
RUN cd ~ && \
|
||||
curl -L "https://github.com/curl/curl/releases/download/curl-8_8_0/curl-8.8.0.tar.gz" -o curl-8.8.0.tar.gz && \
|
||||
tar -xzvf curl-8.8.0.tar.gz && \
|
||||
cd curl-8.8.0 && \
|
||||
mkdir build && cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DCURL_DISABLE_ALTSVC=ON -DCURL_DISABLE_SRP=ON \
|
||||
-DCURL_DISABLE_COOKIES=ON -DCURL_DISABLE_BASIC_AUTH=ON -DCURL_DISABLE_BEARER_AUTH=ON \
|
||||
-DCURL_DISABLE_DIGEST_AUTH=ON -DCURL_DISABLE_KERBEROS_AUTH=ON -DCURL_DISABLE_NEGOTIATE_AUTH=ON \
|
||||
-DCURL_DISABLE_AWS=ON -DCURL_DISABLE_DICT=ON -DCURL_DISABLE_DOH=ON -DCURL_DISABLE_FILE=ON \
|
||||
-DCURL_DISABLE_FORM_API=ON -DCURL_DISABLE_FTP=ON -DCURL_DISABLE_GETOPTIONS=ON \
|
||||
-DCURL_DISABLE_GOPHER=ON -DCURL_DISABLE_HEADERS_API=ON -DCURL_DISABLE_HSTS=ON \
|
||||
-DCURL_DISABLE_HTTP_AUTH=ON -DCURL_DISABLE_IMAP=ON -DCURL_DISABLE_LDAP=ON \
|
||||
-DCURL_DISABLE_LDAPS=ON -DCURL_DISABLE_LIBCURL_OPTION=ON -DCURL_DISABLE_MQTT=ON \
|
||||
-DCURL_DISABLE_NETRC=ON -DCURL_DISABLE_NTLM=ON -DCURL_DISABLE_POP3=ON \
|
||||
-DCURL_DISABLE_PROXY=ON -DCURL_DISABLE_RTSP=ON -DCURL_DISABLE_SMB=ON \
|
||||
-DCURL_DISABLE_SMTP=ON -DCURL_DISABLE_TELNET=ON -DCURL_DISABLE_TFTP=ON \
|
||||
-DUSE_MANUAL=OFF -DCURL_ENABLE_SSL=OFF -DUSE_LIBIDN2=ON -DCURL_USE_LIBPSL=OFF \
|
||||
-DCURL_USE_LIBSSH2=OFF -DCMAKE_INSTALL_PREFIX=/clib -DBUILD_TESTING=OFF ../ && \
|
||||
make -j$(grep -c ^processor /proc/cpuinfo) && make install && \
|
||||
cd ~ && rm -rf curl-8.8.0 curl-8.8.0.tar.gz
|
||||
WORKDIR /app
|
||||
COPY . /app
|
||||
RUN export PKG_CONFIG_PATH=/clib/lib/pkgconfig \
|
||||
@@ -69,9 +89,15 @@ RUN apt-get update && apt-get install -y \
|
||||
COPY --from=builder /app/target/release/pixiv_downloader /app/pixiv_downloader
|
||||
COPY --from=builder /clib/lib /app/lib
|
||||
COPY --from=builder /app/i18n-output /app
|
||||
COPY --from=builder /clib/bin /app/bin
|
||||
ENV LD_LIBRARY_PATH=/app/lib
|
||||
ENV PATH=/app/bin:$PATH
|
||||
ENV LC_ALL=C.utf8
|
||||
|
||||
RUN mkdir -p /app/data && mkdir -p /app/downloads && mkdir -p /app/temp
|
||||
|
||||
ENTRYPOINT [ "/app/pixiv_downloader" ]
|
||||
CMD [ "s" ]
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=30s --start-period=10s --retries=3 \
|
||||
CMD curl -Lk -fsS http://localhost:8080/api/version || exit 1
|
||||
|
||||
@@ -413,20 +413,22 @@ impl OptHelper {
|
||||
#[cfg(feature = "server")]
|
||||
/// Return the server
|
||||
pub fn server(&self) -> SocketAddr {
|
||||
match self.opt.get_ref().server {
|
||||
Some(server) => {
|
||||
return server;
|
||||
}
|
||||
None => {}
|
||||
}
|
||||
if self.settings.get_ref().have("server") {
|
||||
let v = self.settings.get_ref().get("server").unwrap();
|
||||
return SocketAddr::from_str(v.as_str().unwrap()).unwrap();
|
||||
}
|
||||
#[cfg(feature = "docker")]
|
||||
return SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 8080);
|
||||
#[cfg(not(feature = "docker"))]
|
||||
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080)
|
||||
{
|
||||
match self.opt.get_ref().server {
|
||||
Some(server) => {
|
||||
return server;
|
||||
}
|
||||
None => {}
|
||||
}
|
||||
if self.settings.get_ref().have("server") {
|
||||
let v = self.settings.get_ref().get("server").unwrap();
|
||||
return SocketAddr::from_str(v.as_str().unwrap()).unwrap();
|
||||
}
|
||||
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080)
|
||||
}
|
||||
}
|
||||
|
||||
/// Return whether to use description from Web API when description from APP API is empty.
|
||||
|
||||
Reference in New Issue
Block a user