修改了基于docker 一键部署的Dockerfile 和dockercompose.yaml
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
|||||||
|
FROM python:3.7-alpine
|
||||||
|
|
||||||
|
COPY . /app/
|
||||||
|
|
||||||
|
WORKDIR /app/
|
||||||
|
|
||||||
|
ENV TIME_ZONE Asia/Shanghai
|
||||||
|
ENV PIPURL "https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.douban.com"
|
||||||
|
|
||||||
|
RUN apk update \
|
||||||
|
&& apk add --virtual mysqlclient-build gcc python3-dev musl-dev \
|
||||||
|
&& apk add --no-cache mariadb-dev \
|
||||||
|
&& apk add --virtual system-build linux-headers libffi-dev \
|
||||||
|
&& apk add --no-cache jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
|
||||||
|
&& apk add --no-cache bash bash-doc bash-completion \
|
||||||
|
&& apk add --no-cache libxslt-dev tzdata g++
|
||||||
|
RUN echo "${TIME_ZONE}" > /etc/timezone \
|
||||||
|
&& ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime
|
||||||
|
RUN pip --no-cache-dir install -i ${PIPURL} --upgrade pip \
|
||||||
|
&& pip --no-cache-dir install -i ${PIPURL} -r requirements.txt \
|
||||||
|
&& pip --no-cache-dir install -i ${PIPURL} gunicorn
|
||||||
|
RUN apk add mysql-client
|
||||||
|
RUN chmod +x start.sh
|
||||||
|
RUN sed -i 's/MYSQL_HOST = "127.0.0.1"/MYSQL_HOST = "mysql"/' applications/config.py
|
||||||
|
RUN sed -i 's/REDIS_HOST = "127.0.0.1"/REDIS_HOST = "redis"/' applications/config.py
|
||||||
|
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
|
||||||
|
CMD /bin/sh
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
redis:
|
||||||
|
image: redis
|
||||||
|
ports:
|
||||||
|
- "63799:6379"
|
||||||
|
mysql:
|
||||||
|
image: mysql
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: 123456
|
||||||
|
LANG: C.UTF-8
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
MYSQL_CHARSET: utf8mb4
|
||||||
|
MYSQL_COLLATION: utf8mb4_unicode_ci
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
flask:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
ports:
|
||||||
|
- "5000:5000"
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
- mysql
|
||||||
|
restart: always
|
||||||
|
command: sh -c "./start.sh"
|
||||||
@@ -8,6 +8,8 @@ WORKDIR /app/
|
|||||||
|
|
||||||
ENV TIME_ZONE Asia/Shanghai
|
ENV TIME_ZONE Asia/Shanghai
|
||||||
|
|
||||||
RUN chmod +x /app/start.sh
|
RUN echo "${TIME_ZONE}" > /etc/timezone \
|
||||||
|
&& ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime \
|
||||||
|
&& chmod +x /app/start.sh
|
||||||
|
|
||||||
CMD ./start.sh
|
CMD ./start.sh
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: "mysql:5.7"
|
||||||
|
container_name: mysql
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
volumes:
|
||||||
|
- "./dockerdata/mysql/data:/var/lib/mysql"
|
||||||
|
- "./dockerdata/mysql/initdb:/docker-entrypoint-initdb.d"
|
||||||
|
environment:
|
||||||
|
LANG: C.UTF-8
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
MYSQL_ROOT_PASSWORD: 123456
|
||||||
|
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
|
||||||
|
networks:
|
||||||
|
flask-network:
|
||||||
|
ipv4_address: 172.10.1.31
|
||||||
|
|
||||||
|
flask:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile.server
|
||||||
|
container_name: flask
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
depends_on:
|
||||||
|
- mysql
|
||||||
|
networks:
|
||||||
|
flask-network:
|
||||||
|
ipv4_address: 172.10.1.11
|
||||||
|
|
||||||
|
networks:
|
||||||
|
flask-network:
|
||||||
|
driver: bridge
|
||||||
|
ipam:
|
||||||
|
config:
|
||||||
|
- subnet: 172.10.0.0/16
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import os
|
||||||
|
import multiprocessing
|
||||||
|
|
||||||
|
bind = '0.0.0.0:8000'
|
||||||
|
backlog = 512
|
||||||
|
chdir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
timeout = 30
|
||||||
|
worker_class = 'sync'
|
||||||
|
|
||||||
|
workers = multiprocessing.cpu_count() * 2 + 1
|
||||||
|
threads = 2
|
||||||
|
loglevel = 'info'
|
||||||
|
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
|
||||||
|
|
||||||
|
if not os.path.exists('logs'):
|
||||||
|
os.mkdir('logs')
|
||||||
|
|
||||||
|
accesslog = os.path.join(chdir, "logs/gunicorn_access.log")
|
||||||
|
errorlog = os.path.join(chdir, "logs/gunicorn_error.log")
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Wait for MySQL container to be ready
|
||||||
|
echo "Waiting for MySQL container to start..."
|
||||||
|
until mysql -h mysql -uroot -p123456 -e ";" 2>/dev/null; do
|
||||||
|
echo "MySQL container not ready, sleeping for 5 seconds..."
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
echo "MySQL container started successfully!"
|
||||||
|
|
||||||
|
# to start create the dababase
|
||||||
|
echo " start to create the databse... "
|
||||||
|
mysql -uroot -p123456 -hmysql -e 'CREATE DATABASE PearAdminFlask DEFAULT CHARSET UTF8;'
|
||||||
|
|
||||||
|
|
||||||
|
# Initialize Flask database
|
||||||
|
echo "Initializing Flask database..."
|
||||||
|
flask db init
|
||||||
|
flask db migrate
|
||||||
|
flask db upgrade
|
||||||
|
flask admin init
|
||||||
|
|
||||||
|
# Start Flask application
|
||||||
|
echo "Starting Flask application..."
|
||||||
|
python3 app.py
|
||||||
|
|
||||||
Reference in New Issue
Block a user