From 83d4e9840dfc68701fbd167b4dea7eee3191701d Mon Sep 17 00:00:00 2001 From: Dessalines Date: Thu, 15 Aug 2019 18:05:49 -0700 Subject: Reorganizing docker compose files. - Fixes #197 --- Dockerfile | 50 ------------------------------------------ README.md | 4 ++-- docker-compose.yml | 33 ---------------------------- docker/dev/Dockerfile | 50 ++++++++++++++++++++++++++++++++++++++++++ docker/dev/docker-compose.yml | 34 ++++++++++++++++++++++++++++ docker/docker-compose.yml | 32 --------------------------- docker/docker_db_backup.sh | 1 + docker/docker_update.sh | 5 +++++ docker/prod/docker-compose.yml | 32 +++++++++++++++++++++++++++ docker_db_backup.sh | 1 - docker_update.sh | 5 ----- 11 files changed, 124 insertions(+), 123 deletions(-) delete mode 100644 Dockerfile delete mode 100644 docker-compose.yml create mode 100644 docker/dev/Dockerfile create mode 100644 docker/dev/docker-compose.yml delete mode 100644 docker/docker-compose.yml create mode 100755 docker/docker_db_backup.sh create mode 100755 docker/docker_update.sh create mode 100644 docker/prod/docker-compose.yml delete mode 100755 docker_db_backup.sh delete mode 100755 docker_update.sh diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 0eb5f60d..00000000 --- a/Dockerfile +++ /dev/null @@ -1,50 +0,0 @@ -FROM node:10-jessie as node -WORKDIR /app/ui - -# Cache deps -COPY ui/package.json ui/yarn.lock ./ -RUN yarn install --pure-lockfile - -# Build -COPY ui /app/ui -RUN yarn build - -FROM rust:latest as rust - -# Install musl -RUN apt-get update -RUN apt-get install musl-tools -y -RUN rustup target add x86_64-unknown-linux-musl - -# Cache deps -WORKDIR /app -RUN USER=root cargo new server -WORKDIR /app/server -COPY server/Cargo.toml server/Cargo.lock ./ -RUN mkdir -p ./src/bin \ - && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs -RUN RUSTFLAGS=-Clinker=musl-gcc cargo build --release --target=x86_64-unknown-linux-musl -RUN rm -f ./target/x86_64-unknown-linux-musl/release/deps/lemmy_server* -COPY server/src ./src/ -COPY server/migrations ./migrations/ - -# build for release -RUN RUSTFLAGS=-Clinker=musl-gcc cargo build --frozen --release --target=x86_64-unknown-linux-musl - -# Get diesel-cli on there just in case -# RUN cargo install diesel_cli --no-default-features --features postgres - -FROM alpine:latest - -# Install libpq for postgres -RUN apk add libpq - -# Copy resources -COPY --from=rust /app/server/target/x86_64-unknown-linux-musl/release/lemmy_server /app/lemmy -COPY --from=node /app/ui/dist /app/dist -RUN addgroup -g 1000 lemmy -RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy -RUN chown lemmy:lemmy /app/lemmy -USER lemmy -EXPOSE 8536 -CMD ["/app/lemmy"] diff --git a/README.md b/README.md index b264b853..a601ace0 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Make sure you have both docker and docker-compose(>=`1.24.0`) installed. ``` mkdir lemmy/ cd lemmy/ -wget https://raw.githubusercontent.com/dessalines/lemmy/master/docker/docker-compose.yml +wget https://raw.githubusercontent.com/dessalines/lemmy/master/docker/prod/docker-compose.yml docker-compose up -d ``` @@ -98,7 +98,7 @@ location / { ``` git clone https://github.com/dessalines/lemmy -cd lemmy +cd lemmy/docker ./docker_update.sh # This pulls the newest version, builds and runs it ``` diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 8607d546..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,33 +0,0 @@ -version: '2.4' - -services: - db: - image: postgres:12-alpine - restart: always - environment: - POSTGRES_USER: rrr - POSTGRES_PASSWORD: rrr - POSTGRES_DB: rrr - volumes: - - db:/var/lib/postgresql/data - healthcheck: - test: ["CMD-SHELL", "pg_isready -U rrr"] - interval: 5s - timeout: 5s - retries: 20 - lemmy: - build: - context: . - ports: - - "8536:8536" - environment: - LEMMY_FRONT_END_DIR: /app/dist - DATABASE_URL: postgres://rrr:rrr@db:5432/rrr - JWT_SECRET: changeme - HOSTNAME: rrr - restart: always - depends_on: - db: - condition: service_healthy -volumes: - db: diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile new file mode 100644 index 00000000..0eb5f60d --- /dev/null +++ b/docker/dev/Dockerfile @@ -0,0 +1,50 @@ +FROM node:10-jessie as node +WORKDIR /app/ui + +# Cache deps +COPY ui/package.json ui/yarn.lock ./ +RUN yarn install --pure-lockfile + +# Build +COPY ui /app/ui +RUN yarn build + +FROM rust:latest as rust + +# Install musl +RUN apt-get update +RUN apt-get install musl-tools -y +RUN rustup target add x86_64-unknown-linux-musl + +# Cache deps +WORKDIR /app +RUN USER=root cargo new server +WORKDIR /app/server +COPY server/Cargo.toml server/Cargo.lock ./ +RUN mkdir -p ./src/bin \ + && echo 'fn main() { println!("Dummy") }' > ./src/bin/main.rs +RUN RUSTFLAGS=-Clinker=musl-gcc cargo build --release --target=x86_64-unknown-linux-musl +RUN rm -f ./target/x86_64-unknown-linux-musl/release/deps/lemmy_server* +COPY server/src ./src/ +COPY server/migrations ./migrations/ + +# build for release +RUN RUSTFLAGS=-Clinker=musl-gcc cargo build --frozen --release --target=x86_64-unknown-linux-musl + +# Get diesel-cli on there just in case +# RUN cargo install diesel_cli --no-default-features --features postgres + +FROM alpine:latest + +# Install libpq for postgres +RUN apk add libpq + +# Copy resources +COPY --from=rust /app/server/target/x86_64-unknown-linux-musl/release/lemmy_server /app/lemmy +COPY --from=node /app/ui/dist /app/dist +RUN addgroup -g 1000 lemmy +RUN adduser -D -s /bin/sh -u 1000 -G lemmy lemmy +RUN chown lemmy:lemmy /app/lemmy +USER lemmy +EXPOSE 8536 +CMD ["/app/lemmy"] diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml new file mode 100644 index 00000000..b4daff61 --- /dev/null +++ b/docker/dev/docker-compose.yml @@ -0,0 +1,34 @@ +version: '2.4' + +services: + lemmy_db: + image: postgres:12-alpine + restart: always + environment: + POSTGRES_USER: rrr + POSTGRES_PASSWORD: rrr + POSTGRES_DB: rrr + volumes: + - lemmy_db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U rrr"] + interval: 5s + timeout: 5s + retries: 20 + lemmy: + build: + context: ../../ + dockerfile: docker/dev/Dockerfile + ports: + - "8536:8536" + environment: + LEMMY_FRONT_END_DIR: /app/dist + DATABASE_URL: postgres://rrr:rrr@lemmy_db:5432/rrr + JWT_SECRET: changeme + HOSTNAME: rrr + restart: always + depends_on: + lemmy_db: + condition: service_healthy +volumes: + lemmy_db: diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index 9db7bc2c..00000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: '2.4' - -services: - db: - image: postgres:12-alpine - restart: always - environment: - POSTGRES_USER: rrr - POSTGRES_PASSWORD: rrr - POSTGRES_DB: rrr - volumes: - - db:/var/lib/postgresql/data - healthcheck: - test: ["CMD-SHELL", "pg_isready -U rrr"] - interval: 5s - timeout: 5s - retries: 20 - lemmy: - image: dessalines/lemmy:v0.0.6 - ports: - - "8536:8536" - environment: - LEMMY_FRONT_END_DIR: /app/dist - DATABASE_URL: postgres://rrr:rrr@db:5432/rrr - JWT_SECRET: changeme - HOSTNAME: rrr - restart: always - depends_on: - db: - condition: service_healthy -volumes: - db: diff --git a/docker/docker_db_backup.sh b/docker/docker_db_backup.sh new file mode 100755 index 00000000..d42826e0 --- /dev/null +++ b/docker/docker_db_backup.sh @@ -0,0 +1 @@ +docker exec -it dev_lemmy_db_1 pg_dumpall -c -U rrr > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql diff --git a/docker/docker_update.sh b/docker/docker_update.sh new file mode 100755 index 00000000..0891943f --- /dev/null +++ b/docker/docker_update.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -e + +git pull +docker-compose -f dev/docker-compose.yml up -d --no-deps --build diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml new file mode 100644 index 00000000..9db7bc2c --- /dev/null +++ b/docker/prod/docker-compose.yml @@ -0,0 +1,32 @@ +version: '2.4' + +services: + db: + image: postgres:12-alpine + restart: always + environment: + POSTGRES_USER: rrr + POSTGRES_PASSWORD: rrr + POSTGRES_DB: rrr + volumes: + - db:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U rrr"] + interval: 5s + timeout: 5s + retries: 20 + lemmy: + image: dessalines/lemmy:v0.0.6 + ports: + - "8536:8536" + environment: + LEMMY_FRONT_END_DIR: /app/dist + DATABASE_URL: postgres://rrr:rrr@db:5432/rrr + JWT_SECRET: changeme + HOSTNAME: rrr + restart: always + depends_on: + db: + condition: service_healthy +volumes: + db: diff --git a/docker_db_backup.sh b/docker_db_backup.sh deleted file mode 100755 index e361da19..00000000 --- a/docker_db_backup.sh +++ /dev/null @@ -1 +0,0 @@ -docker exec -it lemmy_db_1 pg_dumpall -c -U rrr > dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql diff --git a/docker_update.sh b/docker_update.sh deleted file mode 100755 index 4a52b522..00000000 --- a/docker_update.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -set -e - -git pull -docker-compose up -d --no-deps --build -- cgit v1.2.3