Update Docker images: new directory structure
This commit is contained in:
parent
243795c7d5
commit
5e37cd54fc
9 changed files with 75 additions and 65 deletions
|
@ -1,4 +1,4 @@
|
|||
FROM photoprism/development:20190626
|
||||
FROM photoprism/development:20190629
|
||||
|
||||
# Set up project directory
|
||||
WORKDIR "/go/src/github.com/photoprism/photoprism"
|
||||
|
|
|
@ -4,7 +4,7 @@ FROM photoprism/photoprism:latest as build
|
|||
ENV TF_CPP_MIN_LOG_LEVEL 2
|
||||
|
||||
RUN mkdir -p /srv/photoprism/photos/import && \
|
||||
wget -qO- https://dl.photoprism.org/fixtures/demo.tar.gz | tar xvz -C /srv/photoprism/photos/import
|
||||
wget -qO- https://dl.photoprism.org/fixtures/demo.tar.gz | tar xvz -C Pictures/Import
|
||||
|
||||
# Import example photos
|
||||
RUN photoprism import
|
||||
|
|
|
@ -43,7 +43,6 @@ RUN apt-get update && apt-get upgrade && \
|
|||
wget \
|
||||
git \
|
||||
mysql-client \
|
||||
libgtk-3-bin \
|
||||
tzdata \
|
||||
gconf-service \
|
||||
chromium-browser \
|
||||
|
@ -58,15 +57,14 @@ RUN add-apt-repository ppa:pmjdebruijn/darktable-release && \
|
|||
apt-get upgrade && \
|
||||
apt-get dist-upgrade
|
||||
|
||||
# Install TensorFlow C library
|
||||
# Install & configure TensorFlow for C
|
||||
ENV LD_LIBRARY_PATH /root/.local/lib:/usr/local/lib:/usr/lib:/lib
|
||||
ENV TF_CPP_MIN_LOG_LEVEL 0
|
||||
RUN curl -L \
|
||||
"https://dl.photoprism.org/tensorflow/linux/libtensorflow-linux-avx-1.14.0.tar.gz" | \
|
||||
tar -C "/usr" -xz
|
||||
RUN ldconfig
|
||||
|
||||
# Show TensorFlow debug log
|
||||
ENV TF_CPP_MIN_LOG_LEVEL 0
|
||||
|
||||
# Install NodeJS
|
||||
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
|
||||
RUN apt-get update && \
|
||||
|
@ -94,7 +92,7 @@ RUN set -eux; \
|
|||
# Configure Go environment
|
||||
ENV GOPATH /go
|
||||
ENV GOBIN $GOPATH/bin
|
||||
ENV PATH $GOBIN:/usr/local/go/bin:$PATH
|
||||
ENV PATH $GOBIN:/usr/local/go/bin:/root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
ENV GO111MODULE on
|
||||
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
|
||||
|
||||
|
@ -108,16 +106,11 @@ RUN env GO111MODULE=off /usr/local/go/bin/go get -u golang.org/x/tools/cmd/goimp
|
|||
RUN env GO111MODULE=off /usr/local/go/bin/go get -u github.com/kyoh86/richgo
|
||||
RUN echo "alias go=richgo" > /root/.bash_aliases
|
||||
|
||||
# Configure broadwayd (HTML5 display server)
|
||||
# Command: broadwayd -p 8080 -a 0.0.0.0 :5
|
||||
ENV GDK_BACKEND broadway
|
||||
ENV BROADWAY_DISPLAY :5
|
||||
|
||||
# Set up project directory
|
||||
WORKDIR "/go/src/github.com/photoprism/photoprism"
|
||||
|
||||
# Expose HTTP port plus 4000 for TiDB, 8080 for broadwayd and 9515 for chromedriver
|
||||
EXPOSE 80 2342 4000 8080 9515
|
||||
# Expose HTTP port 2342 plus 4000 for TiDB and 9515 for chromedriver
|
||||
EXPOSE 2342 4000 9515
|
||||
|
||||
# Keep container running (services can be started manually using a terminal)
|
||||
CMD tail -f /dev/null
|
||||
|
|
|
@ -1,21 +1,17 @@
|
|||
FROM photoprism/development:20190626 as build
|
||||
FROM photoprism/development:20190629 as build
|
||||
|
||||
# Set up project directory
|
||||
WORKDIR "/go/src/github.com/photoprism/photoprism"
|
||||
COPY . .
|
||||
|
||||
# Build PhotoPrism
|
||||
RUN make all install
|
||||
RUN make dep build-js install
|
||||
|
||||
# Base base image as photoprism/development
|
||||
FROM ubuntu:18.04
|
||||
|
||||
# Set environment variables
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
ENV TF_CPP_MIN_LOG_LEVEL 2
|
||||
ENV PHOTOPRISM_CONFIG_FILE /srv/photoprism/config/photoprism.yml
|
||||
|
||||
WORKDIR /srv/photoprism
|
||||
|
||||
# Install additional distribution packages
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
|
@ -30,15 +26,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Copy built binaries and assets to this image
|
||||
# Copy dependencies
|
||||
COPY --from=build /etc/apt/sources.list.d/pmjdebruijn-ubuntu-darktable-release-bionic.list /etc/apt/sources.list.d/pmjdebruijn-ubuntu-darktable-release-bionic.list
|
||||
COPY --from=build /etc/apt/trusted.gpg.d/pmjdebruijn_ubuntu_darktable-release.gpg /etc/apt/trusted.gpg.d/pmjdebruijn_ubuntu_darktable-release.gpg
|
||||
COPY --from=build /usr/local/bin/photoprism /usr/local/bin/photoprism
|
||||
COPY --from=build /usr/lib/libtensorflow.so /usr/lib/libtensorflow.so
|
||||
COPY --from=build /usr/lib/libtensorflow_framework.so /usr/lib/libtensorflow_framework.so
|
||||
COPY --from=build /srv/photoprism /srv/photoprism
|
||||
|
||||
# Configure dynamic linker run-time bindings
|
||||
RUN ldconfig
|
||||
|
||||
# Install darktable (RAW to JPEG converter)
|
||||
|
@ -47,12 +39,36 @@ RUN apt-get update && \
|
|||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Create and configure photoprism user
|
||||
RUN useradd -ms /bin/bash photoprism
|
||||
USER photoprism
|
||||
|
||||
WORKDIR /home/photoprism
|
||||
ENV PATH /home/photoprism/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
ENV TF_CPP_MIN_LOG_LEVEL 2
|
||||
ENV PHOTOPRISM_CONFIG_FILE /home/photoprism/.config/photoprism/photoprism.yml
|
||||
|
||||
# Copy assets to /home/photoprism
|
||||
COPY --chown=photoprism --from=build /root/.local/bin/photoprism /home/photoprism/.local/bin/photoprism
|
||||
COPY --chown=photoprism --from=build /root/.local/share/photoprism /home/photoprism/.local/share/photoprism
|
||||
COPY --chown=photoprism --from=build /root/.config/photoprism /home/photoprism/.config/photoprism
|
||||
|
||||
# Create directories
|
||||
RUN mkdir -p /home/photoprism/.cache/photoprism \
|
||||
/home/photoprism/Pictures/Originals \
|
||||
/home/photoprism/Pictures/Import \
|
||||
/home/photoprism/Pictures/Export
|
||||
|
||||
# Fix permissions
|
||||
USER root
|
||||
RUN chown -R photoprism:photoprism /home/photoprism
|
||||
USER photoprism
|
||||
|
||||
# Show photoprism version
|
||||
RUN photoprism -v
|
||||
|
||||
# Expose HTTP & TiDB port
|
||||
EXPOSE 80
|
||||
EXPOSE 4000
|
||||
# Expose http and database ports
|
||||
EXPOSE 2342 4000
|
||||
|
||||
# Start PhotoPrism server
|
||||
# Run server
|
||||
CMD photoprism start
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
version: '3.3'
|
||||
|
||||
# Example docker-compose config file for production use
|
||||
# Container image on Docker Hub: https://hub.docker.com/r/photoprism/photoprism/
|
||||
# To keep photoprism running, add "restart: always"
|
||||
#
|
||||
# Usage: docker-compose up
|
||||
|
||||
services:
|
||||
photoprism: # change if needed
|
||||
image: photoprism/photoprism:latest # use pre-built image from docker hub: https://hub.docker.com/r/photoprism/photoprism/
|
||||
restart: always
|
||||
photoprism:
|
||||
image: photoprism/photoprism:latest
|
||||
ports:
|
||||
- 2342:80 # left side is your local port (change if port 2342 is already used or you want to use port 80)
|
||||
- 2342:2342 # [local port]:[container port]
|
||||
volumes:
|
||||
- "~/Photos:/srv/photoprism/photos" # change ~/Photos to whatever directory you want to use on your local computer
|
||||
- "photoprism-cache:/srv/photoprism/cache" # keep this (thumbnail cache)
|
||||
- "photoprism-database:/srv/photoprism/database" # keep this (database files)
|
||||
environment:
|
||||
PHOTOPRISM_IMPORT_PATH: /srv/photoprism/photos/Import # ~/Photos/Import (files to be imported to originals)
|
||||
PHOTOPRISM_EXPORT_PATH: /srv/photoprism/photos/Export # ~/Photos/Export (files exported from originals)
|
||||
PHOTOPRISM_ORIGINALS_PATH: /srv/photoprism/photos/Originals # ~/Photos/Originals (original jpeg, raw and meta files)
|
||||
- "~/Pictures/Originals:/home/photoprism/Pictures/Originals" # [local path]:[container path]
|
||||
- "~/Pictures/Import:/home/photoprism/Pictures/Import" # [local path]:[container path] (optional)
|
||||
- "~/Pictures/Export:/home/photoprism/Pictures/Export" # [local path]:[container path] (optional)
|
||||
- "photoprism-cache:/home/photoprism/.cache/photoprism" # keep thumbnail cache
|
||||
- "photoprism-database:/home/photoprism/.local/share/photoprism/resources/database" # keep database files
|
||||
|
||||
volumes: # keep this
|
||||
photoprism-cache:
|
||||
|
|
|
@ -102,7 +102,7 @@ func startAction(ctx *cli.Context) error {
|
|||
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
<-quit
|
||||
log.Info("Shutting down...")
|
||||
log.Info("shutting down...")
|
||||
conf.Shutdown()
|
||||
cancel()
|
||||
err := dctx.Release()
|
||||
|
|
|
@ -31,6 +31,7 @@ var GlobalFlags = []cli.Flag{
|
|||
cli.StringFlag{
|
||||
Name: "config-path",
|
||||
Usage: "config `PATH`",
|
||||
Value: "~/.config/photoprism",
|
||||
EnvVar: "PHOTOPRISM_CONFIG_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
|
@ -41,31 +42,31 @@ var GlobalFlags = []cli.Flag{
|
|||
cli.StringFlag{
|
||||
Name: "originals-path",
|
||||
Usage: "originals `PATH`",
|
||||
Value: "/srv/photoprism/photos/originals",
|
||||
Value: "~/Pictures/Originals",
|
||||
EnvVar: "PHOTOPRISM_ORIGINALS_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "import-path",
|
||||
Usage: "import `PATH`",
|
||||
Value: "/srv/photoprism/photos/import",
|
||||
Value: "~/Pictures/Import",
|
||||
EnvVar: "PHOTOPRISM_IMPORT_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "export-path",
|
||||
Usage: "export `PATH`",
|
||||
Value: "/srv/photoprism/photos/export",
|
||||
Value: "~/Pictures/Export",
|
||||
EnvVar: "PHOTOPRISM_EXPORT_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "cache-path",
|
||||
Usage: "cache `PATH`",
|
||||
Value: "/srv/photoprism/cache",
|
||||
Value: "~/.cache/photoprism",
|
||||
EnvVar: "PHOTOPRISM_CACHE_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "assets-path",
|
||||
Usage: "assets `PATH`",
|
||||
Value: "/srv/photoprism",
|
||||
Value: "~/.local/share/photoprism",
|
||||
EnvVar: "PHOTOPRISM_ASSETS_PATH",
|
||||
},
|
||||
cli.StringFlag{
|
||||
|
@ -83,7 +84,7 @@ var GlobalFlags = []cli.Flag{
|
|||
cli.IntFlag{
|
||||
Name: "http-port, p",
|
||||
Usage: "HTTP server port",
|
||||
Value: 80,
|
||||
Value: 2342,
|
||||
EnvVar: "PHOTOPRISM_HTTP_PORT",
|
||||
},
|
||||
cli.StringFlag{
|
||||
|
@ -156,13 +157,13 @@ var GlobalFlags = []cli.Flag{
|
|||
Name: "daemon-pid-path",
|
||||
Usage: "File path to store daemon PID",
|
||||
EnvVar: "PHOTOPRISM_DAEMON_PID_PATH",
|
||||
Value: "/srv/photoprism/photoprism.pid",
|
||||
Value: "~/.local/share/photoprism/photoprism.pid",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "daemon-log-path",
|
||||
Usage: "File path for daemon logs.",
|
||||
EnvVar: "PHOTOPRISM_DAEMON_LOG_PATH",
|
||||
Value: "/srv/photoprism/photoprism.log",
|
||||
Value: "~/.local/share/photoprism/photoprism.log",
|
||||
},
|
||||
cli.BoolFlag{
|
||||
Name: "daemonize, d",
|
||||
|
|
|
@ -8,42 +8,44 @@ import (
|
|||
)
|
||||
|
||||
func InitDatabase(port uint, password string) error {
|
||||
log.Info("init database: trying login without password")
|
||||
log.Info("initializing database...")
|
||||
|
||||
db, err := sql.Open("mysql", fmt.Sprintf("root:@tcp(localhost:%d)/", port))
|
||||
|
||||
defer db.Close()
|
||||
|
||||
if err != nil {
|
||||
log.Debugf("init database: %s", err)
|
||||
log.Debug("init database: login as root with password")
|
||||
log.Debug(err.Error())
|
||||
log.Debug("database login as root with password")
|
||||
db, err = sql.Open("mysql", fmt.Sprintf("root:%s@tcp(localhost:%d)/", password, port))
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
log.Error(err.Error())
|
||||
return err
|
||||
}
|
||||
|
||||
log.Debug("init database: login was successful")
|
||||
log.Debug("set database password")
|
||||
|
||||
_, err = db.Exec(fmt.Sprintf("SET PASSWORD FOR 'root'@'%%' = '%s'", password))
|
||||
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
log.Error(err.Error())
|
||||
} else {
|
||||
log.Debug("init database: FLUSH PRIVILEGES")
|
||||
log.Debug("flush database privileges")
|
||||
|
||||
_, err = db.Exec("FLUSH PRIVILEGES")
|
||||
}
|
||||
|
||||
log.Debug("init database: CREATE DATABASE IF NOT EXISTS photoprism")
|
||||
log.Debug("create database if not exists")
|
||||
|
||||
_, err = db.Exec("CREATE DATABASE IF NOT EXISTS photoprism")
|
||||
|
||||
if err != nil {
|
||||
log.Error(err)
|
||||
log.Error(err.Error())
|
||||
}
|
||||
|
||||
log.Info("database created")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
if [[ -z $DOCKER_PASSWORD ]] || [[ -z $DOCKER_USERNAME ]]; then
|
||||
echo "DOCKER_PASSWORD and DOCKER_USERNAME not set in your environment";
|
||||
exit 1
|
||||
docker login
|
||||
else
|
||||
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
||||
fi
|
||||
|
||||
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
||||
|
||||
|
||||
if [[ -z $1 ]] || [[ -z $2 ]]; then
|
||||
echo "Please provide a container image name and version" 1>&2
|
||||
exit 1
|
||||
|
@ -16,4 +14,4 @@ else
|
|||
docker push photoprism/$1:latest
|
||||
docker push photoprism/$1:$2
|
||||
echo "Done"
|
||||
fi
|
||||
fi
|
||||
|
|
Loading…
Add table
Reference in a new issue