build backend docker image

This commit is contained in:
appflowy 2021-12-02 18:55:51 +08:00
parent 06a91b02fb
commit 24ea68c605
10 changed files with 30 additions and 41 deletions

View File

@ -18,7 +18,7 @@ jobs:
POSTGRES_PASSWORD: password POSTGRES_PASSWORD: password
POSTGRES_DB: postgres POSTGRES_DB: postgres
ports: ports:
- 5433:5432 - 5432:5432
env: env:
SQLX_VERSION: 0.5.7 SQLX_VERSION: 0.5.7
SQLX_FEATURES: postgres SQLX_FEATURES: postgres
@ -106,7 +106,7 @@ jobs:
POSTGRES_PASSWORD: password POSTGRES_PASSWORD: password
POSTGRES_DB: postgres POSTGRES_DB: postgres
ports: ports:
- 5433:5432 - 5432:5432
env: env:
SQLX_VERSION: 0.5.7 SQLX_VERSION: 0.5.7
SQLX_FEATURES: postgres SQLX_FEATURES: postgres

View File

@ -1,26 +1,19 @@
ROOT = "./scripts" ROOT = "./scripts"
.PHONY: init_database add_migrations run_migrations reset_db .PHONY: init_database run_docker run_test
init_database: init_database:
${ROOT}/init_database.sh POSTGRES_PORT=5433 ${ROOT}/init_database.sh
run_docker: docker_image:
source $(ROOT)/env.sh && docker-compose up -d db source $(ROOT)/docker_env.sh && docker-compose up -d db
source $(ROOT)/env.sh && docker-compose up -d backend source $(ROOT)/docker_env.sh && docker-compose up -d backend
source $(ROOT)/env.sh && docker-compose logs backend
reset_db: docker_test:
#diesel database reset sh $(ROOT)/docker_test.sh
sqlx database reset
add_migrations: local_test:
#make table="the name of your table" add_migrations # 🔥 Must run init_database first
# diesel migration generation $(table) SQLX_OFFLINE=true cargo test
sqlx migrate add $(table)
run_migrations:
# diesel migration run
sqlx migrate run

View File

@ -2,4 +2,5 @@ application:
host: 0.0.0.0 host: 0.0.0.0
database: database:
host: "db" host: "db"
port: 5432
require_ssl: false require_ssl: false

View File

@ -9,7 +9,7 @@
3. run `make init_postgres` if you have not run before. You can find out the running container by run `docker ps` 3. run `make init_postgres` if you have not run before. You can find out the running container by run `docker ps`
``` ```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bfcdd6369e89 postgres "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 0.0.0.0:5433->5432/tcp, :::5433->5432/tcp brave_bassi bfcdd6369e89 postgres "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp brave_bassi
``` ```
4. run `make init_database`. It will create the database scheme on remote specified by DATABASE_URL. You can connect you database using 4. run `make init_database`. It will create the database scheme on remote specified by DATABASE_URL. You can connect you database using
@ -22,7 +22,7 @@ The information you enter must be the same as the `make init_postgres`. e.g.
export DB_USER=postgres export DB_USER=postgres
export DB_PASSWORD=password export DB_PASSWORD=password
export DB_NAME=flowy export DB_NAME=flowy
export DB_PORT=5433 export DB_PORT=5432
``` ```
![img_1.png](img_1.png) ![img_1.png](img_1.png)

View File

@ -6,10 +6,10 @@ services:
- POSTGRES_USER=${POSTGRES_USER} - POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DB=${POSTGRES_DB} - POSTGRES_DB=${POSTGRES_DB}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# network_mode: "host"
ports: ports:
- 5433:5432 - "5434:5432"
backend: backend:
restart: on-failure
environment: environment:
- APP_ENVIRONMENT=production - APP_ENVIRONMENT=production
- DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db/${POSTGRES_DB}" - DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db/${POSTGRES_DB}"

View File

@ -0,0 +1,10 @@
#!/bin/bash
export BACKEND_VERSION="v0.0.1"
export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=password
export POSTGRES_PORT=5432
export POSTGRES_HOST=db
export POSTGRES_DB=flowy
export DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}

View File

@ -0,0 +1,2 @@
#!/bin/bash
curl -i --request Get --url http://0.0.0.0:8000/api/user --header 'content-type: application/json' --data '{"token":"123"}'

View File

@ -1,16 +0,0 @@
#!/bin/bash
export POSTGRES_USER=postgres
export POSTGRES_PASSWORD=password
export POSTGRES_PORT=5433
export POSTGRES_HOST=localhost
export POSTGRES_DB=flowy
export DB_USER="${POSTGRES_USER:=postgres}"
export DB_PASSWORD="${POSTGRES_PASSWORD:=password}"
export DB_PORT="${POSTGRES_PORT:=5433}"
export DB_HOST="${POSTGRES_HOST:=localhost}"
export DB_NAME="${POSTGRES_DB:=flowy}"
export BACKEND_VERSION="v0.0.1"
export DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@localhost:${DB_PORT}/${DB_NAME}

View File

@ -20,7 +20,7 @@ fi
DB_USER="${POSTGRES_USER:=postgres}" DB_USER="${POSTGRES_USER:=postgres}"
DB_PASSWORD="${POSTGRES_PASSWORD:=password}" DB_PASSWORD="${POSTGRES_PASSWORD:=password}"
DB_PORT="${POSTGRES_PORT:=5433}" DB_PORT="${POSTGRES_PORT:=5432}"
DB_HOST="${POSTGRES_HOST:=localhost}" DB_HOST="${POSTGRES_HOST:=localhost}"
DB_NAME="${POSTGRES_DB:=flowy}" DB_NAME="${POSTGRES_DB:=flowy}"

View File

@ -32,7 +32,6 @@ pub struct Application {
impl Application { impl Application {
pub async fn build(configuration: Settings, app_ctx: AppContext) -> Result<Self, std::io::Error> { pub async fn build(configuration: Settings, app_ctx: AppContext) -> Result<Self, std::io::Error> {
println!("🚀🚀🚀 {:?}", configuration);
let address = format!("{}:{}", configuration.application.host, configuration.application.port); let address = format!("{}:{}", configuration.application.host, configuration.application.port);
let listener = TcpListener::bind(&address)?; let listener = TcpListener::bind(&address)?;
let port = listener.local_addr().unwrap().port(); let port = listener.local_addr().unwrap().port();