docker fix

This commit is contained in:
Dmitriy Bondarenko 2025-03-27 18:57:49 +00:00
parent 99247eab2a
commit f752e46457
5 changed files with 81 additions and 54 deletions

35
Dockerfile Normal file
View 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"]

View File

@ -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');

View File

View File

@ -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}

2
go.mod
View File

@ -1,4 +1,4 @@
module track-company module truck-company
go 1.22.2 go 1.22.2