因为应用容器化部署已经是标准化的流程,无需再详篇介绍具体的部署流程。所以本文只提供相关的配置文档。如果对部署过程不了解的同学,请先自学容器基础。
镜像已经创建好了,如下
docker.io/xhuaustc/jira-software:7.11.0 docker.io/xhuaustc/atlassian-mysql:5.7
镜像构建配置
Jira容器构建
git clone https://github.com/cptactionhank/docker-atlassian-jira-software
将setenv.sh与atlassian-extras-3.2.jar拷贝到docker-atlassian-jira-software
# setenv.sh## One way to set the JIRA HOME path is here via this variable. Simply uncomment it and set a valid path like /jira/home. You can of course set it outside in the command terminal. That will also work.##JIRA_HOME=""## Occasionally Atlassian Support may recommend that you set some specific JVM arguments. You can use this variable below to do that.#JVM_SUPPORT_RECOMMENDED_ARGS=""## The following 2 settings control the minimum and maximum given to the JIRA Java virtual machine. In larger JIRA instances, the maximum amount will need to be increased.#JVM_MINIMUM_MEMORY=${JVM_XMS:-384m}JVM_MAXIMUM_MEMORY=${JVM_XMX:-768m}## The following are the required arguments for JIRA.#JVM_REQUIRED_ARGS='-Djava.awt.headless=true -Datlassian.standalone=JIRA -Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true -Dmail.mime.decodeparameters=true -Dorg.dom4j.factory=com.atlassian.core.xml.InterningDocumentFactory'# Uncomment this setting if you want to import data without notifications##DISABLE_NOTIFICATIONS=" -Datlassian.mail.senddisabled=true -Datlassian.mail.fetchdisabled=true -Datlassian.mail.popdisabled=true"#-----------------------------------------------------------------------------------## In general don't make changes below here##-----------------------------------------------------------------------------------#-----------------------------------------------------------------------------------# Prevents the JVM from suppressing stack traces if a given type of exception# occurs frequently, which could make it harder for support to diagnose a problem.#-----------------------------------------------------------------------------------JVM_EXTRA_ARGS="-XX:-OmitStackTraceInFastThrow"PRGDIR=`dirname "$0"` cat "${PRGDIR}"/jirabanner.txt JIRA_HOME_MINUSD=""if [ "$JIRA_HOME" != "" ]; then echo $JIRA_HOME | grep -q " " if [ $? -eq 0 ]; then echo "" echo "--------------------------------------------------------------------------------------------------------------------" echo " WARNING : You cannot have a JIRA_HOME environment variable set with spaces in it. This variable is being ignored" echo "--------------------------------------------------------------------------------------------------------------------" else JIRA_HOME_MINUSD=-Djira.home=$JIRA_HOME fifiJAVA_OPTS="-Xms${JVM_MINIMUM_MEMORY} -Xmx${JVM_MAXIMUM_MEMORY} ${JAVA_OPTS} ${JVM_REQUIRED_ARGS} ${DISABLE_NOTIFICATIONS} ${JVM_SUPPORT_RECOMMENDED_ARGS} ${JVM_EXTRA_ARGS} ${JIRA_HOME_MINUSD} ${START_JIRA_JAVA_OPTS}"export JAVA_OPTS# DO NOT remove the following line# !INSTALLER SET JAVA_HOMEecho ""echo "If you encounter issues starting or stopping JIRA, please see the Troubleshooting guide at http://confluence.atlassian.com/display/JIRA/Installation+Troubleshooting+Guide"echo ""if [ "$JIRA_HOME_MINUSD" != "" ]; then echo "Using JIRA_HOME: $JIRA_HOME"fi# set the location of the pid fileif [ -z "$CATALINA_PID" ] ; then if [ -n "$CATALINA_BASE" ] ; then CATALINA_PID="$CATALINA_BASE"/work/catalina.pid elif [ -n "$CATALINA_HOME" ] ; then CATALINA_PID="$CATALINA_HOME"/work/catalina.pid fifiexport CATALINA_PIDif [ -z "$CATALINA_BASE" ]; then if [ -z "$CATALINA_HOME" ]; then LOGBASE=$PRGDIR LOGTAIL=.. else LOGBASE=$CATALINA_HOME LOGTAIL=. fielse LOGBASE=$CATALINA_BASE LOGTAIL=.fiPUSHED_DIR=`pwd`cd $LOGBASEcd $LOGTAILLOGBASEABS=`pwd`cd $PUSHED_DIRecho ""echo "Server startup logs are located in $LOGBASEABS/logs/catalina.out"# Set the JVM arguments used to start JIRA. For a description of the options, see# http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#-----------------------------------------------------------------------------------# This allows us to actually debug GC related issues by correlating timestamps# with other parts of the application logs.#-----------------------------------------------------------------------------------GC_JVM_PARAMETERS=""GC_JVM_PARAMETERS="-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCCause ${GC_JVM_PARAMETERS}"GC_JVM_PARAMETERS="-Xloggc:$LOGBASEABS/logs/atlassian-jira-gc-%t.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M ${GC_JVM_PARAMETERS}"CATALINA_OPTS="${GC_JVM_PARAMETERS} ${CATALINA_OPTS}"export CATALINA_OPTS
构建Dockerfile
#DockerfileFROM openjdk:8-alpine# Configuration variables.ENV JIRA_HOME /var/atlassian/jira ENV JIRA_INSTALL /opt/atlassian/jira ENV JIRA_VERSION 7.11.0# Install Atlassian JIRA and helper tools and setup initial home# directory structure.RUN set -x \ && apk add --no-cache curl xmlstarlet bash ttf-dejavu libc6-compat \ && mkdir -p "${JIRA_HOME}" \ && mkdir -p "${JIRA_HOME}/caches/indexes" \ && chmod -R 777 "${JIRA_HOME}" \ && mkdir -p "${JIRA_INSTALL}/conf/Catalina" \ && curl -Ls "https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-7.11.0.tar.gz" | tar -xz --directory "${JIRA_INSTALL}" --strip-components=1 --no-same-owner \ && curl -Ls "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.38.tar.gz" | tar -xz --directory "${JIRA_INSTALL}/lib" --strip-components=1 --no-same-owner "mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar" \ && rm -f "${JIRA_INSTALL}/lib/postgresql-9.1-903.jdbc4-atlassian-hosted.jar" \ && curl -Ls "https://jdbc.postgresql.org/download/postgresql-42.2.1.jar" -o "${JIRA_INSTALL}/lib/postgresql-42.2.1.jar" \ && chmod -R 777 "${JIRA_INSTALL}/conf" \ && chmod -R 777 "${JIRA_INSTALL}/logs" \ && chmod -R 777 "${JIRA_INSTALL}/temp" \ && chmod -R 777 "${JIRA_INSTALL}/work" \ && sed --in-place "s/java version/openjdk version/g" "${JIRA_INSTALL}/bin/check-java.sh" \ && echo -e "\njira.home=$JIRA_HOME" >> "${JIRA_INSTALL}/atlassian-jira/WEB-INF/classes/jira-application.properties" \ && touch -d "@0" "${JIRA_INSTALL}/conf/server.xml"# Use the default unprivileged account. This could be considered bad practice# on systems where multiple processes end up being executed by 'daemon' but# here we only ever run one process anyway.# Expose default HTTP connector port.EXPOSE 8080# Set volume mount points for installation and home directory. Changes to the# home directory needs to be persisted as well as parts of the installation# directory due to eg. logs.VOLUME ["/var/atlassian/jira", "/opt/atlassian/jira/logs"]# Set the default working directory as the installation directory.WORKDIR /var/atlassian/jira COPY "docker-entrypoint.sh" "/"COPY atlassian-extras-3.2.jar ${JIRA_INSTALL}/atlassian-jira/WEB-INF/lib/atlassian-extras-3.2.jar COPY setenv.sh ${JIRA_INSTALL}/bin/setenv.sh ENTRYPOINT ["/docker-entrypoint.sh"]# Run Atlassian JIRA as a foreground process by default.CMD ["/opt/atlassian/jira/bin/start-jira.sh", "-fg"]
构建对应的Mysql镜像
# my.cnf[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= NULL# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0character_set_server=utf8 init_connect='SET NAMES utf8'collation_server=utf8_bin transaction_isolation='read-committed'# Custom config should go here!includedir /etc/mysql/conf.d/
Dockerfile文件
FROM mysql:5.7 COPY my.cnf /etc/mysql/my.cnf
部署镜像
构建docker-compose.yml
jira: image: xhuaustc/jira-software:7.11.0 restart: always environment: - JVM_XMX=2048m - JVM_XMS=1024m ports: - '8080:8080' links: - db volumes: - ./data/jira:/var/atlassian/jira - ./data/logs:/opt/atlassian/jira/logs db: image: xhuaustc/atlassian-mysql:5.7 restart: always environment: - MYSQL_USER=jira - MYSQL_PASSWORD=jira - MYSQL_DATABASE=jira - MYSQL_ROOT_PASSWORD=jira volumes: - ./data/mysql:/var/lib/mysql
Openshift Jira模板
apiVersion: v1 kind: Template metadata: name: jira objects: - apiVersion: v1 kind: DeploymentConfig metadata: labels: run: jira name: jira spec: replicas: 1 selector: run: jira strategy: type: Recreate template: metadata: labels: run: jira spec: containers: - env: - name: JVM_XMX value: 2048m - name: JVM_XMS value: 1024m image: docker.io/xhuaustc/jira-software:7.11.0 imagePullPolicy: IfNotPresent name: jira volumeMounts: - mountPath: /var/atlassian/jira name: volume-7iy6x - mountPath: /opt/atlassian/jira/logs name: volume-zsyly volumes: - name: volume-7iy6x persistentVolumeClaim: claimName: jira - name: volume-zsyly persistentVolumeClaim: claimName: jira-log triggers: - type: ConfigChange - apiVersion: v1 kind: DeploymentConfig metadata: labels: run: mysql-jira name: mysql-jira spec: replicas: 1 selector: run: mysql-jira strategy: type: Recreate template: metadata: labels: run: mysql-jira spec: containers: - env: - name: MYSQL_USER value: jira - name: MYSQL_PASSWORD value: jira - name: MYSQL_DATABASE value: jira - name: MYSQL_ROOT_PASSWORD value: jira image: docker.io/xhuaustc/atlassian-mysql:5.7 imagePullPolicy: IfNotPresent name: mysql-jira volumeMounts: - mountPath: /var/lib/mysql name: volume-uiwfa volumes: - name: volume-uiwfa persistentVolumeClaim: claimName: mysql-jira-data triggers: - type: ConfigChange - apiVersion: v1 kind: Service metadata: labels: run: jira name: jira spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: run: jira type: ClusterIP - apiVersion: v1 kind: Service metadata: labels: run: mysql-jira name: mysql-jira spec: ports: - port: 3306 protocol: TCP targetPort: 3306 selector: run: mysql-jira type: ClusterIP - apiVersion: v1 kind: Route metadata: annotations: haproxy.router.openshift.io/timeout: 3000s labels: run: jira name: jira spec: port: targetPort: 8080 to: kind: Service name: jira weight: 100 wildcardPolicy: None - apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: volume.beta.kubernetes.io/storage-class: ceph-rbd-sc volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/rbd name: jira spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi - apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: volume.beta.kubernetes.io/storage-class: ceph-rbd-sc volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/rbd name: jira-log spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi - apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: volume.beta.kubernetes.io/storage-class: ceph-rbd-sc volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/rbd name: mysql-jira-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
作者:潘晓华Michael
链接:https://www.jianshu.com/p/744c23f93dfc
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦