python和java项目容器化 - Dockerfile

项目容器化 - Dockerfile

Python项目

Dockerfile
FROM python:3.6
LABEL version="1.0"
# 没有的话会进行创建
WORKDIR /root/.pip
# 把宿主机当前下的pip.conf 拷贝到容器里,为了给pip加速
COPY ./pip.conf /root/.pip
# 把项目 拷贝到容器里 并且容器的项目名也为medical_kg_chatbot
COPY ./medical_kg_chatbot/ /medical_kg_chatbot
WORKDIR /medical_kg_chatbot
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 8866
CMD ["python", "manage.py"]
pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
运行命令
# build
docker build -t kg-chatbot:v1 .

# 运行 
docker run -d -p 8866:8866 -e NEO4J_HOST=xx.xx.xx.xx --name kg-chatbot kg-chatbot:v1

# 参数说明:
NEO4J_HOST neo4j的ip 默认:127.0.0.1
NEO4J_PORT 端口 默认:7474
NEO4J_USERNAME  用户名:neo4j
NEO4J_PASSWORD  用户密码:xxxx

# 测试
curl http://127.0.0.1:8866/test/
项目里定义好参数(config.py)
# -*- coding: utf-8 -*-
import os

# 获取环境变量
env_dict = os.environ

NEO4J_HOST = env_dict.get("NEO4J_HOST", "127.0.0.1")
NEO4J_PORT = int(env_dict.get("NEO4J_PORT", 7474))
NEO4J_USERNAME = env_dict.get("NEO4J_USERNAME", "neo4j")
NEO4J_PASSWORD = env_dict.get("NEO4J_PASSWORD", "xxx")
注意点

项目要以容器里的ip进行启动或(0.0.0.0),不然外面的访问不到,例如以下代码:

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=8866, threaded=True)

Java项目

Dockerfile
FROM mdsol/java11-jdk
LABEL version="1.0"
COPY ./kg-api.jar /build/
WORKDIR /build/
EXPOSE 2223
CMD ["java", "-jar", "-Xms128m", "-Xmx512m", "-XX:PermSize=128m", "-XX:MaxPermSize=512m", "kg-api.jar", "--spring.profiles.active=dev"]
java运行参数
-Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

堆的内存分配用-Xms和-Xmx
-Xms分配堆最小内存,默认为物理内存的1/64;-Xmx分配最大内存,默认为物理内存的1/4。

非堆内存分配用-XX:PermSize和-XX:MaxPermSize
-XX:PermSize分配非堆最小内存,默认为物理内存的1/64;-XX:MaxPermSize分配非堆最大内存,默认为物理内存的1/4。
命令
# build
docker build -t kg-api:v1 .

# 运行
docker run -d -p 2222:2222 --name kg-api kg-api:v1

# 测试
curl http://127.0.0.1:2222/disease/relation/?name=百日咳
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值