之前给开源项目 drawio 用 FineUI 套了个壳,一直有BUG, 长时间挂后台保存后会丢(画完发现白了😢),最近又改了一版(也不知道能不能修复),放在了dockerhub上,安装很方便拉取就可以用了,数据库指定了容器没有自定义,这里放拉取代码。
sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
sudo curl -L "https://github.com/docker/compose/releases/download/{VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
创建文件夹
mkdir -p /home/finedrawio cd /home/finedrawio
创建文件
vim docker-compose.yml
services: finedrawio: image: 935732994/finedrawio #8000是对外端口 ports: - "8000:80" depends_on: - finedrawiodb #这个名字写死了,不要改 finedrawiodb: image: 935732994/finedrawio:db #端口也可以布外露,可以删掉,我是测试用的 ports: - "3307:3306" #这里也没有外露mysql 的数据卷
运行
docker compose up -d
访问 ip:8000,因为要导入数据库,这里做了90秒的延迟(我服务器卡),所以要多等会
初始用户 test 123456,管理员账户(可以进入后台) admin _admin
构建挺坎坷,这里记录下,
没正经学过docker,第一版拉了一个centos7镜像,现安装.net6 和 mysql环境,然后还原数据库,虽然挺稳定,但是太大了 2G+,拉取太慢,最后就分开了,分别拉取了 .net6 和 mysql5.7的镜像,构建程序和数据库,然后用compose.yml 和一块,命令如下
appDockerfile#拉取 FROM mcr.microsoft.com/dotnet/aspnet:6.0 as build RUN apt-get update \ && apt-get install -y netcat \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # 暴露端口80 EXPOSE 80 #复制程序 COPY ./publish /app RUN chmod +x FineDrawio.Web COPY start.sh /start.sh RUN chmod +x /start.sh #在启动后执行 CMD ["/start.sh"]
start.sh#!/bin/bash # 启动MySQL #/usr/sbin/mysqld --user=mysql & echo "Finedrawiodb Waiting..." sleep 90 #睡一觉看看mysql起来了没有 while ! nc -z finedrawiodb 3306; do echo "Waiting for database port to be open..." sleep 5 done echo "Initializing dotnetapp..." # 等待MySQL启动 #sleep 60 echo "Initializing dotnet..." # 启动.NET应用程序 ./FineDrawio.Web
mysqlDockerfile# 使用官方MySQL镜像作为基础镜像 FROM mysql:5.7.44 as build # 设置环境变量,MySQL容器会使用这些环境变量来初始化数据库设置 ENV MYSQL_DATABASE=finedrawio ENV MYSQL_USER=finedrawio ENV MYSQL_PASSWORD=finedrawio ENV MYSQL_ROOT_PASSWORD=finedrawio # 设置默认的字符集和比较规则 ENV MYSQL_CHARSET=utf8mb4 ENV MYSQL_COLLATION=utf8mb4_unicode_ci # 将初始化SQL脚本复制到容器内的特定位置,容器启动时会自动执行这些脚本 COPY finedrawio.sql /docker-entrypoint-initdb.d/ # 指示Docker容器在运行时监听3306端口 EXPOSE 3306
app 和 db 分别上传到了一个项目935732994/finedrawio
的不同tag
最后在compose
时加入depends_on
表示这个容器启动时要依赖finedrawiodb
;
本文作者:没想好
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!