想弄個爬蟲看看芽狗,簡單搜索了一下 spider-flow 評價不錯鲤妥,開干
雖然以前維護(hù)過Java的應(yīng)用咸这,但也是很多年前的事情了夷恍,而且自己經(jīng)常都搞不同軟件,還是用docker來得靠譜
第一次弄Java相關(guān)的docker媳维,耗了一個下午才搞定
官網(wǎng)說的環(huán)境包括:Java8酿雪、maven3、MySQL5.7
先找人家打包好的
因為是在MacBook上面折騰侄刽,得搞個支持M1的
結(jié)果打包好的都是x86的
而且打包了的完全不知道人家配置的jdbc配置指黎,數(shù)據(jù)host還可以從報錯看到,用戶名密碼完全沒辦法州丹。醋安。(jar從鏡像抽出來再解壓?)
自己打一個試試吧
maven3
代碼pull下來以后墓毒,先考慮編譯
# -v /Users/xxxx/maven-repo:/root/.m2 將編譯的時候下載依賴包存下來吓揪,這很重要 ToT,docker用完就清的特性蚁鳖,每次下載真的很痛苦
docker run -it --rm --name my-maven-project -v /Users/xxxx/maven-repo:/root/.m2 -v "$projectDir":/usr/src/mymaven -w /usr/src/mymaven maven:3.8.6-openjdk-8-slim mvn clean install
Java8
耗了點時間磺芭,不過對dockerhub有更熟悉了一些
用官網(wǎng)Dockerfile赁炎, 第一句 FROM java:8 就會報錯
在hub上面翻了一段時間醉箕,找到了這個鏡像 openjdk:8-jdk-alpine
報錯如下
docker build .
[+] Building 2.9s (3/3) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 267B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/java:8 2.8s
------
> [internal] load metadata for docker.io/library/java:8:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: docker.io/library/java:8: not found
將Dockerfile改成這樣,就好了
FROM openjdk:8-jdk-alpine
RUN mkdir -p /spider-flow
WORKDIR /spider-flow
EXPOSE 8088
ADD ./spider-flow-web/target/spider-flow.jar ./
CMD sleep 30;java -Djava.security.egd=file:/dev/./urandom -jar spider-flow.jar
MySQL5.7
本以為是最簡單卻用了不少時間徙垫,用了mariadb讥裤,MySQL也沒有5.7的官方鏡像了
后面是用docker-compose 拉起來的,直接上配置
mysql:
image: mariadb:10.4.26
volumes:
- "/Users/xxx/localMysqlData:/var/lib/mysql"
environment:
MARIADB_ROOT_PASSWORD: 123456789
expose:
- "3306"
然后把數(shù)據(jù)導(dǎo)進(jìn)去姻报,命令也是在hub的介紹里面有寫
# 這是錯誤姿勢己英,后面拉起來以后頁面中文亂碼
docker exec -i d1d13ea9efaa sh -c 'exec mariadb -uroot -p123456789' < spiderflow.sql
# 一通亂跳以后,發(fā)現(xiàn)是導(dǎo)進(jìn)去的時候字符集錯了
# 指定一下utf8
docker exec -i d1d13ea9efaa sh -c 'exec mariadb -uroot -p123456789 --default-character-set=utf8' < spiderflow.sql
拉起來吧
docker-compose 之前也沒搞過吴旋,現(xiàn)學(xué)了
$ cat 20221105.yaml
services:
web:
image: spider-flow:20221105-4
ports:
- "8088:8088"
depends_on:
- mysql
mysql:
image: mariadb:10.4.26
volumes:
- "/Users/xxx/work/localMysqlData:/var/lib/mysql"
environment:
MARIADB_ROOT_PASSWORD: 123456789
expose:
- "3306"
$ docker-compose -f 20221105.yaml up
瀏覽器 localhost:8088损肛,可以了