docker fix
This commit is contained in:
parent
99247eab2a
commit
f752e46457
35
Dockerfile
Normal file
35
Dockerfile
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Этап сборки
|
||||||
|
FROM docker.io/library/golang:latest AS builder
|
||||||
|
|
||||||
|
# Рабочая директория
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
# Копируем файлы зависимостей
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
|
||||||
|
RUN go mod tidy
|
||||||
|
RUN go mod download
|
||||||
|
|
||||||
|
# Копируем весь код
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN ls
|
||||||
|
|
||||||
|
# Собираем приложение (статически линкуем для Alpine)
|
||||||
|
RUN CGO_ENABLED=0 GOOS=linux go build -o /app ./cmd/api
|
||||||
|
|
||||||
|
# Этап запуска
|
||||||
|
FROM docker.io/library/alpine:latest
|
||||||
|
|
||||||
|
# Рабочая директория
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Копируем бинарник из этапа сборки
|
||||||
|
COPY --from=builder /app .
|
||||||
|
|
||||||
|
|
||||||
|
# Порт, который будет слушать приложение
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
# Команда запуска
|
||||||
|
CMD ["./app"]
|
@ -1,61 +1,49 @@
|
|||||||
-- Сначала создадим базу данных
|
-- -- Сначала создадим базу данных
|
||||||
CREATE DATABASE transport_company;
|
-- DROP DATABASE transport_company;
|
||||||
|
-- CREATE DATABASE transport_company;
|
||||||
|
|
||||||
-- Переключаемся на базу данных
|
-- Переключаемся на базу данных
|
||||||
\c transport_company;
|
\c transport_company;
|
||||||
|
CREATE TABLE Clients (
|
||||||
-- Таблица для водителей
|
|
||||||
CREATE TABLE drivers (
|
|
||||||
id SERIAL PRIMARY KEY,
|
id SERIAL PRIMARY KEY,
|
||||||
name VARCHAR(100) NOT NULL,
|
name VARCHAR(100) NOT NULL,
|
||||||
license_number VARCHAR(50) UNIQUE NOT NULL,
|
email VARCHAR(100) UNIQUE NOT NULL,
|
||||||
phone VARCHAR(15),
|
is_regular BOOLEAN DEFAULT FALSE
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Таблица для автомобилей
|
CREATE TABLE Routes (
|
||||||
CREATE TABLE vehicles (
|
|
||||||
id SERIAL PRIMARY KEY,
|
|
||||||
license_plate VARCHAR(20) UNIQUE NOT NULL,
|
|
||||||
model VARCHAR(50),
|
|
||||||
year INT,
|
|
||||||
driver_id INT REFERENCES drivers(id) ON DELETE CASCADE,
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
||||||
);
|
|
||||||
|
|
||||||
-- Таблица для маршрутов
|
|
||||||
CREATE TABLE routes (
|
|
||||||
id SERIAL PRIMARY KEY,
|
id SERIAL PRIMARY KEY,
|
||||||
name VARCHAR(100) NOT NULL,
|
name VARCHAR(100) NOT NULL,
|
||||||
start_location VARCHAR(100),
|
start_point VARCHAR(100) NOT NULL,
|
||||||
end_location VARCHAR(100),
|
end_point VARCHAR(100) NOT NULL,
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
price DECIMAL(10, 2) NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Таблица для поездок
|
CREATE TABLE Transport (
|
||||||
CREATE TABLE trips (
|
|
||||||
id SERIAL PRIMARY KEY,
|
id SERIAL PRIMARY KEY,
|
||||||
vehicle_id INT REFERENCES vehicles(id) ON DELETE CASCADE,
|
type VARCHAR(50) NOT NULL,
|
||||||
route_id INT REFERENCES routes(id) ON DELETE CASCADE,
|
capacity DECIMAL(10, 2) NOT NULL,
|
||||||
driver_id INT REFERENCES drivers(id) ON DELETE CASCADE,
|
status VARCHAR(50) DEFAULT 'free'
|
||||||
trip_date TIMESTAMP NOT NULL,
|
|
||||||
status VARCHAR(20) CHECK (status IN ('scheduled', 'completed', 'canceled')),
|
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Пример заполнения начальных данных
|
CREATE TABLE RouteTransport (
|
||||||
INSERT INTO drivers (name, license_number, phone) VALUES
|
route_id INT REFERENCES Routes(id),
|
||||||
('Иван Петров', 'A1234567', '123456789'),
|
transport_id INT REFERENCES Transport(id),
|
||||||
('Мария Иванова', 'B7654321', '987654321');
|
departure_time TIMESTAMP,
|
||||||
|
arrival_time TIMESTAMP,
|
||||||
|
PRIMARY KEY (route_id, transport_id)
|
||||||
|
);
|
||||||
|
|
||||||
INSERT INTO vehicles (license_plate, model, year, driver_id) VALUES
|
CREATE TABLE Cargo (
|
||||||
('ABC123', 'Toyota Camry', 2019, 1),
|
id SERIAL PRIMARY KEY,
|
||||||
('XYZ789', 'Honda Accord', 2020, 2);
|
name VARCHAR(100) NOT NULL,
|
||||||
|
weight DECIMAL(10, 2) NOT NULL,
|
||||||
|
route_id INT REFERENCES Routes(id)
|
||||||
|
);
|
||||||
|
|
||||||
INSERT INTO routes (name, start_location, end_location) VALUES
|
CREATE TABLE Orders (
|
||||||
('Маршрут 1', 'Москва', 'Санкт-Петербург'),
|
id SERIAL PRIMARY KEY,
|
||||||
('Маршрут 2', 'Казань', 'Екатеринбург');
|
client_id INT REFERENCES Clients(id),
|
||||||
|
cargo_id INT REFERENCES Cargo(id),
|
||||||
INSERT INTO trips (vehicle_id, route_id, driver_id, trip_date, status) VALUES
|
total_cost DECIMAL(10, 2) NOT NULL
|
||||||
(1, 1, 1, '2024-07-01 08:00:00', 'scheduled'),
|
);
|
||||||
(2, 2, 2, '2024-07-02 09:00:00', 'completed');
|
|
@ -1,8 +1,8 @@
|
|||||||
version: '3.8'
|
version: '3.8'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
db:
|
postgres:
|
||||||
image: postgres:13
|
image: docker.io/library/postgres:13
|
||||||
container_name: postgres
|
container_name: postgres
|
||||||
|
|
||||||
restart: always
|
restart: always
|
||||||
@ -13,10 +13,14 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "5432:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
|
- ./database/init:/docker-entrypoint-initdb.d
|
||||||
networks:
|
|
||||||
- transport_network
|
|
||||||
|
|
||||||
networks:
|
app:
|
||||||
transport_network:
|
build: .
|
||||||
driver: bridge
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
environment:
|
||||||
|
- DB_HOST=postgres
|
||||||
|
- DB_USER=${POSTGRES_USER}
|
||||||
|
- DB_PASSWORD=${POSTGRES_PASSWORD}
|
||||||
|
- DB_NAME=${POSTGRES_DB}
|
||||||
|
Loading…
Reference in New Issue
Block a user