working couchdb reverse proxy behind webapp binary.
working dockerfile and dockercompose file added s6-overlay to base image, built ontop of couchdb now. Bootstrapping of couchdb now creates _users and other system databases.
This commit is contained in:
parent
a7daae9047
commit
fcb9d6b31f
27
Dockerfile
27
Dockerfile
|
@ -1,3 +1,6 @@
|
||||||
|
#########################################################################################################
|
||||||
|
# Frontend Build
|
||||||
|
#########################################################################################################
|
||||||
FROM node:18.9.0 as frontend-build
|
FROM node:18.9.0 as frontend-build
|
||||||
WORKDIR /usr/src/fastenhealth/frontend
|
WORKDIR /usr/src/fastenhealth/frontend
|
||||||
#COPY frontend/package.json frontend/yarn.lock ./
|
#COPY frontend/package.json frontend/yarn.lock ./
|
||||||
|
@ -8,6 +11,9 @@ RUN yarn config set registry "http://registry.npmjs.org" \
|
||||||
COPY frontend/ ./
|
COPY frontend/ ./
|
||||||
RUN yarn run build -- --configuration sandbox --output-path=../dist
|
RUN yarn run build -- --configuration sandbox --output-path=../dist
|
||||||
|
|
||||||
|
#########################################################################################################
|
||||||
|
# Backend Build
|
||||||
|
#########################################################################################################
|
||||||
FROM golang:1.18 as backend-build
|
FROM golang:1.18 as backend-build
|
||||||
WORKDIR /go/src/github.com/fastenhealth/fastenhealth-onprem
|
WORKDIR /go/src/github.com/fastenhealth/fastenhealth-onprem
|
||||||
COPY . .
|
COPY . .
|
||||||
|
@ -26,12 +32,29 @@ RUN mkdir -p /opt/fasten/db \
|
||||||
&& curl -o /opt/fasten/db/fasten.db -L https://github.com/fastenhealth/testdata/raw/main/fasten.db
|
&& curl -o /opt/fasten/db/fasten.db -L https://github.com/fastenhealth/testdata/raw/main/fasten.db
|
||||||
|
|
||||||
|
|
||||||
|
#########################################################################################################
|
||||||
|
# Distribution Build
|
||||||
|
#########################################################################################################
|
||||||
|
FROM couchdb:3.2
|
||||||
|
|
||||||
|
ARG S6_ARCH=amd64
|
||||||
|
RUN curl https://github.com/just-containers/s6-overlay/releases/download/v1.21.8.0/s6-overlay-${S6_ARCH}.tar.gz -L -s --output /tmp/s6-overlay-${S6_ARCH}.tar.gz \
|
||||||
|
&& tar xzf /tmp/s6-overlay-${S6_ARCH}.tar.gz -C / \
|
||||||
|
&& rm -rf /tmp/s6-overlay-${S6_ARCH}.tar.gz
|
||||||
|
|
||||||
|
COPY /docker/couchdb/local.ini /opt/couchdb/etc/
|
||||||
|
COPY /docker/rootfs /
|
||||||
|
|
||||||
FROM gcr.io/distroless/static-debian11
|
|
||||||
WORKDIR /opt/fasten/
|
WORKDIR /opt/fasten/
|
||||||
COPY --from=backend-build /opt/fasten/ /opt/fasten/
|
COPY --from=backend-build /opt/fasten/ /opt/fasten/
|
||||||
COPY --from=frontend-build /usr/src/fastenhealth/dist /opt/fasten/web
|
COPY --from=frontend-build /usr/src/fastenhealth/dist /opt/fasten/web
|
||||||
COPY --from=backend-build /go/bin/fasten /opt/fasten/fasten
|
COPY --from=backend-build /go/bin/fasten /opt/fasten/fasten
|
||||||
COPY LICENSE.md /opt/fasten/LICENSE.md
|
COPY LICENSE.md /opt/fasten/LICENSE.md
|
||||||
COPY config.yaml /opt/fasten/config/config.yaml
|
COPY config.yaml /opt/fasten/config/config.yaml
|
||||||
CMD ["/opt/fasten/fasten", "start", "--config", "/opt/fasten/config/config.yaml"]
|
|
||||||
|
ENTRYPOINT ["/init"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,15 @@ version: "3.9"
|
||||||
services:
|
services:
|
||||||
couchdb:
|
couchdb:
|
||||||
build:
|
build:
|
||||||
context: ./docker/couchdb
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
# environment:
|
# environment:
|
||||||
# - COUCHDB_USER=admin
|
# - COUCHDB_USER=admin
|
||||||
# - COUCHDB_PASSWORD=password
|
# - COUCHDB_PASSWORD=password
|
||||||
ports:
|
ports:
|
||||||
|
- "9090:8080"
|
||||||
- "5984:5984"
|
- "5984:5984"
|
||||||
volumes:
|
volumes:
|
||||||
- ./.couchdb/data:/opt/couchdb/data
|
- ./.couchdb/data:/opt/couchdb/data
|
||||||
- ./.couchdb/config:/opt/couchdb/etc/local.d
|
- ./.couchdb/config:/opt/couchdb/etc/local.d
|
||||||
|
# - ./config.example.yaml:/opt/fasten/config/config.yaml
|
||||||
|
|
|
@ -1,3 +1,15 @@
|
||||||
|
#########################################################################################################
|
||||||
|
# CouchDB Build
|
||||||
|
# NOTE: the context for this build should be the root of the repository.
|
||||||
|
#########################################################################################################
|
||||||
FROM couchdb:3.2
|
FROM couchdb:3.2
|
||||||
|
|
||||||
COPY local.ini /opt/couchdb/etc/
|
ARG S6_ARCH=amd64
|
||||||
|
RUN curl https://github.com/just-containers/s6-overlay/releases/download/v1.21.8.0/s6-overlay-${S6_ARCH}.tar.gz -L -s --output /tmp/s6-overlay-${S6_ARCH}.tar.gz \
|
||||||
|
&& tar xzf /tmp/s6-overlay-${S6_ARCH}.tar.gz -C / \
|
||||||
|
&& rm -rf /tmp/s6-overlay-${S6_ARCH}.tar.gz
|
||||||
|
|
||||||
|
COPY /docker/couchdb/local.ini /opt/couchdb/etc/
|
||||||
|
COPY /docker/rootfs /
|
||||||
|
|
||||||
|
ENTRYPOINT ["/init"]
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
if [ -n "${TZ}" ]
|
||||||
|
then
|
||||||
|
ln -snf "/usr/share/zoneinfo/${TZ}" /etc/localtime
|
||||||
|
echo "${TZ}" > /etc/timezone
|
||||||
|
fi
|
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
if [ -f "/opt/couchdb/data/.init_complete" ]; then
|
||||||
|
echo "Couchdb initialization has already completed, skipping"
|
||||||
|
else
|
||||||
|
|
||||||
|
# start couchdb as a background process (store PID)
|
||||||
|
echo "Couchdb initialization: start couchdb in background mode"
|
||||||
|
/opt/couchdb/bin/couchdb &
|
||||||
|
COUCHDB_PID=$!
|
||||||
|
|
||||||
|
# wait for couchdb to be ready
|
||||||
|
until $(curl --output /dev/null --silent --head --fail http://127.0.0.1:5984/_up); do echo "couchdb not ready" && sleep 5; done
|
||||||
|
|
||||||
|
# create couch_peruser required system databases manually on startup
|
||||||
|
echo "couchdb ready, start creating system databases"
|
||||||
|
curl -X PUT http://127.0.0.1:5984/_users
|
||||||
|
curl -X PUT http://127.0.0.1:5984/_replicator
|
||||||
|
curl -X PUT http://127.0.0.1:5984/_global_changes
|
||||||
|
echo "system databases created successfully"
|
||||||
|
|
||||||
|
|
||||||
|
# gracefully stop couchdb process
|
||||||
|
echo "killing couchdb process"
|
||||||
|
kill -2 $COUCHDB_PID
|
||||||
|
|
||||||
|
# create the init complete flag
|
||||||
|
echo "Couchdb initialization: complete"
|
||||||
|
touch /opt/couchdb/data/.init_complete
|
||||||
|
fi
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
echo "starting couchdb"
|
||||||
|
/docker-entrypoint.sh /opt/couchdb/bin/couchdb
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/with-contenv bash
|
||||||
|
|
||||||
|
# wait for couchdb to be ready
|
||||||
|
until $(curl --output /dev/null --silent --head --fail http://127.0.0.1:5984/_up); do echo "couchdb not ready" && sleep 5; done
|
||||||
|
|
||||||
|
echo "starting fasten"
|
||||||
|
/opt/fasten/fasten start --config /opt/fasten/config/config.yaml
|
Loading…
Reference in New Issue